Aktualisieren Sie die Seite für die Anmeldung neuer Nutzer, wenn Sie Google oAuth 2.0 verwenden

8

Ich versuche, eine Website mithilfe von Google Sign für Websites zu erstellen nur um zu lernen, wie es funktioniert.

Ich habe die in diesem Tutorial von Google bereitgestellten Schritte ausgeführt, die gut funktionieren. Benutzer können sich erfolgreich bei meiner Site anmelden, sie kann die Benutzer-ID an das Back-End übergeben und dann die ID-Server-Seite mit einem PHP-Skript überprüfen.

PHP erstellt dann eine Sitzung für den Benutzer auf der Website. Was ich nicht herausfinden kann ist, wie ich die Seite aktualisieren würde, wenn ein Nutzer auf die Schaltfläche "Google Anmelden" klickt und die Anmeldung erfolgreich war. Das Aktualisieren der Seite würde ermöglichen, dass die Homepage mit den neuen PHP-Sitzungsdaten neu geladen wird.

%Vor%

Ich habe versucht, einfach location.reload() innerhalb des onload = function () - Teils des Codes zu verwenden. Dies führt dazu, dass die Seite jedes Mal, wenn sie geladen wird, nur unendlich aktualisiert wird, da Google verifiziert, dass der Benutzer jedes Mal über diese Variable xhr angemeldet ist.

Ich habe versucht, in ihrer Referenz nachzusehen, um GoogleAuth.isSignedIn.listen(listener) zur Überwachung zu verwenden irgendwelche Änderungen, aber es scheint nicht voll, was ich will, oder ich verwende es nicht richtig, da ich nicht genau weiß, was der Zuhörer sein sollte.

Die andere Option könnte sein, ihre GoogleAuth.attachClickHandler(container, options, onsuccess, onfailure) -Funktion zu verwenden, aber ich bin mir nicht ganz sicher, wie das Optionsfeld / die Variable korrekt konfiguriert wird.

Wenn jemand einen Einblick geben könnte, wie diese Welt funktioniert, würde ich das sehr schätzen.

Um zusammenzufassen, wenn der Benutzer bereits mit Google bei meiner Website angemeldet ist, möchte ich, dass die Seite nichts unternimmt. Wenn sie auf die Anmeldeschaltfläche klicken, möchte ich die Seite, auf der sie sich befinden, aktualisieren.

    
Jem 19.04.2017, 02:18
quelle

3 Antworten

2

Sie könnten xhr mit einer Callback-Funktion einen Listener hinzufügen.

%Vor%

Und dann eine Funktion erstellen:

%Vor%

BEARBEITEN:

Ok. Da hilft der Hörer nicht. Sie müssen überprüfen, ob der Benutzer bereits angemeldet ist. Um diese Informationen zu speichern, würde ich an Cookies denken.

Sie können also das Auth Token, das Sie von Google erhalten, speichern und ein Cookie dafür setzen und jedes Mal überprüfen, bevor Sie Ihren POST erstellen.

Hier ist eine nette js-Keks-Bibliothek: Ссылка

Dann laden Sie die ID:

%Vor%

Und die Funktion onSignIn wäre wie folgt:

%Vor%

Natürlich müssen Sie diesen Code verbessern, zum Beispiel prüfen, ob das in den Cookies gespeicherte Token noch gültig ist, in einigen Fällen können Sie es nur aktualisieren, anstatt den Benutzer erneut einzuloggen (die oAuth-API stellt solche Dinge zur Verfügung) .

Treffen Sie einige Sicherheitsmaßnahmen, um sicherzustellen, dass das Token nicht injiziert wird, und so weiter.

    
Renato Parreira 21.04.2017, 12:14
quelle
1

Mein Ansatz war der gleiche wie bei Ihnen und ich hatte tatsächlich das gleiche Problem mit der ständigen Aktualisierung.

Ich habe ein paar Lösungen ausprobiert, die am besten funktionierten:

  • Der Benutzer meldet sich mit dem GAPI2-auslösenden Rückruf an onGoogleSignIn
  • Das Backend prüft die Gültigkeit des ID-Tokens und signiert den Benutzer über die Sitzung in meiner Webapp
  • Bei Erfolg protokolliere ich den Benutzer mithilfe von GAPI2 aus , um unendliches erneutes Laden zu verhindern, da onGoogleSignIn nie wieder aufgerufen wird
  • Dann aktualisiere ich die Seite und ersetze den Anmelde-Button durch einen Logout-Button für meine Webapp

Diese Lösung ist natürlich ziemlich nutzlos, wenn Sie einige Daten im Google-Konto des Benutzers bearbeiten möchten, aber ich fand diese Funktion nicht.

Code für die Anmeldung von jemandem aus seinem Google-Konto.

%Vor%     
Somrlik 25.04.2017 09:03
quelle
0
___ qstnhdr ___ Aktualisieren Sie die Seite für die Anmeldung neuer Nutzer, wenn Sie Google oAuth 2.0 verwenden ___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123php ___ PHP ist eine weit verbreitete, dynamische, objektorientierte und interpretierte Skriptsprache, die primär für die serverseitige Webentwicklung entwickelt wurde. ___ tag123jquery ___ jQuery ist eine beliebte Cross-Browser JavaScript-Bibliothek, die durch die Minimierung der Abweichungen in allen Browsern Document Object Model (DOM) Traversal, Ereignisverarbeitung, Animationen und AJAX-Interaktionen ermöglicht. Eine mit jQuery gekennzeichnete Frage sollte mit jQuery in Zusammenhang stehen, daher sollte jquery von dem fraglichen Code verwendet werden, und mindestens eine jquery-nutzungsbezogene Elemente müssen in der Frage enthalten sein. ___ answer43606133 ___

Mein Ansatz war der gleiche wie bei Ihnen und ich hatte tatsächlich das gleiche Problem mit der ständigen Aktualisierung.

Ich habe ein paar Lösungen ausprobiert, die am besten funktionierten:

  • Der Benutzer meldet sich mit dem GAPI2-auslösenden Rückruf an %code%
  • Das Backend prüft die Gültigkeit des ID-Tokens und signiert den Benutzer über die Sitzung in meiner Webapp
  • Bei Erfolg protokolliere ich den Benutzer mithilfe von GAPI2 aus , um unendliches erneutes Laden zu verhindern, da %code% nie wieder aufgerufen wird
  • Dann aktualisiere ich die Seite und ersetze den Anmelde-Button durch einen Logout-Button für meine Webapp

Diese Lösung ist natürlich ziemlich nutzlos, wenn Sie einige Daten im Google-Konto des Benutzers bearbeiten möchten, aber ich fand diese Funktion nicht.

Code für die Anmeldung von jemandem aus seinem Google-Konto.

%Vor%     
___ antwort43605049 ___

Warum lassen Sie Ihre Back-End-Weiterleitung nicht zu (oder senden Sie Informationen, damit die Seite bei Erfolg weitergeleitet werden kann)?

Was ist nötig, um den Anmeldebildschirm neu zu laden?

Sie können auch die Listener-Dokumentation überprüfen, da diese möglicherweise das löst, was Sie wollen. dh. höre auf Benutzerwechsel und triggert eine Funktion oder Umleitung.

Ссылка

    
___ tag123googlesignin ___ Google Sign-In ermöglicht es Nutzern, sich mit ihren Google-Konten bei Ihrer Anwendung anzumelden ___ qstntxt ___

Ich versuche, eine Website mithilfe von Google Sign für Websites zu erstellen nur um zu lernen, wie es funktioniert.

Ich habe die in diesem Tutorial von Google bereitgestellten Schritte ausgeführt, die gut funktionieren. Benutzer können sich erfolgreich bei meiner Site anmelden, sie kann die Benutzer-ID an das Back-End übergeben und dann die ID-Server-Seite mit einem PHP-Skript überprüfen.

PHP erstellt dann eine Sitzung für den Benutzer auf der Website. Was ich nicht herausfinden kann ist, wie ich die Seite aktualisieren würde, wenn ein Nutzer auf die Schaltfläche "Google Anmelden" klickt und die Anmeldung erfolgreich war. Das Aktualisieren der Seite würde ermöglichen, dass die Homepage mit den neuen PHP-Sitzungsdaten neu geladen wird.

%Vor%

Ich habe versucht, einfach %code% innerhalb des onload = function () - Teils des Codes zu verwenden. Dies führt dazu, dass die Seite jedes Mal, wenn sie geladen wird, nur unendlich aktualisiert wird, da Google verifiziert, dass der Benutzer jedes Mal über diese Variable %code% angemeldet ist.

Ich habe versucht, in ihrer Referenz nachzusehen, um %code% zur Überwachung zu verwenden irgendwelche Änderungen, aber es scheint nicht voll, was ich will, oder ich verwende es nicht richtig, da ich nicht genau weiß, was der Zuhörer sein sollte.

Die andere Option könnte sein, ihre %code% -Funktion zu verwenden, aber ich bin mir nicht ganz sicher, wie das Optionsfeld / die Variable korrekt konfiguriert wird.

Wenn jemand einen Einblick geben könnte, wie diese Welt funktioniert, würde ich das sehr schätzen.

Um zusammenzufassen, wenn der Benutzer bereits mit Google bei meiner Website angemeldet ist, möchte ich, dass die Seite nichts unternimmt. Wenn sie auf die Anmeldeschaltfläche klicken, möchte ich die Seite, auf der sie sich befinden, aktualisieren.

    
___ answer43542473 ___

Sie könnten xhr mit einer Callback-Funktion einen Listener hinzufügen.

%Vor%

Und dann eine Funktion erstellen:

%Vor%

BEARBEITEN:

Ok. Da hilft der Hörer nicht. Sie müssen überprüfen, ob der Benutzer bereits angemeldet ist. Um diese Informationen zu speichern, würde ich an Cookies denken.

Sie können also das Auth Token, das Sie von Google erhalten, speichern und ein Cookie dafür setzen und jedes Mal überprüfen, bevor Sie Ihren POST erstellen.

Hier ist eine nette js-Keks-Bibliothek: Ссылка

Dann laden Sie die ID:

%Vor%

Und die Funktion onSignIn wäre wie folgt:

%Vor%

Natürlich müssen Sie diesen Code verbessern, zum Beispiel prüfen, ob das in den Cookies gespeicherte Token noch gültig ist, in einigen Fällen können Sie es nur aktualisieren, anstatt den Benutzer erneut einzuloggen (die oAuth-API stellt solche Dinge zur Verfügung) .

Treffen Sie einige Sicherheitsmaßnahmen, um sicherzustellen, dass das Token nicht injiziert wird, und so weiter.

    
___ tag123googleauth2 ___ Google-APIs verwenden das OAuth 2.0-Protokoll für Authentifizierung und Autorisierung. Google unterstützt gängige OAuth 2.0-Szenarios, z. B. für Webserver, installierte Anwendungen und clientseitige Anwendungen. ___
Ryan 25.04.2017 08:10
quelle