Aktualisieren von Google AccessToken in Firebase? #AskFirebase

9

Ich versuche eine Web-App zu erstellen, die in Google Drive integriert und installiert wird. Der Benutzer kann die Dateien meiner App auf dem Laufwerk erstellen und freigeben. Ich versuche, es mit Firebase zu schreiben, damit ich dort viele der großartigen neuen Funktionen nutzen kann. Allerdings habe ich Probleme, die Auth auf beiden Plattformen konsistent zu arbeiten.

Dies ist eine clientseitige App (zumindest für den Moment), daher kann ich keine Offlineauthentifizierungs- und Aktualisierungs-Token verwenden.

Vor der Firebase-Authentifizierung würde ich das Google Identity Toolkit mit gapi verwenden. Dies funktioniert im Allgemeinen gut, obwohl es einen Popup-Flow verwendet, der nicht für Mobilgeräte geeignet ist.

%Vor%

Gapi ist ein bisschen ungeschickt, aber es funktioniert. Das -Zugriffstoken kann durch Aufrufen von

abgerufen werden %Vor%

Wie üblich dauert das Zugriffstoken nur etwa eine Stunde und läuft dann ab. Das wichtige ist, dass wir einfach GoogleUser.reloadAuthResponse () aufrufen können, um ein aktualisiertes Zugriffstoken zu erhalten. Beachten Sie, dass es sich um ein aktualisiertes Zugriffstoken und kein Aktualisierungstoken handelt!

In der Theorie kann ich dieses Zugriffstoken einfach verwenden, um sich bei Firebase als hier beschrieben und muss nur mit dem Popup-Flow leben, oder versuche das zu hacken .

Alles in allem sagt Google, dass das Identity Toolkit durch die Firebase-Authentifizierung ersetzt wird und dass neue Apps Firebase verwenden sollten.

  

Die neueste Version von Google Identity Toolkit wurde als veröffentlicht   Firebase-Authentifizierung Es enthält aktualisierte Client SDKs, Open Source   UI-Bibliotheken, Sitzungsverwaltung und integrierter E-Mail-Versanddienst   für vergessene Passwortflüsse.

     

Neue Projekte sollten Firebase-Authentifizierung verwenden. Um zu migrieren   vorhandenes Projekt von Identity Toolkit zur Firebase-Authentifizierung, siehe   der Migrationsleitfaden.

Zitiert nach: Google

Firebase hat eine einfache API für die Authentifizierung mit Google. Ich kann AccessToken bei der Authentifizierung abrufen und speichern. Es scheint also so zu sein, dass ich den Auth, den neuen und verbesserten Firebase-Weg, implementieren sollte. Außerdem bietet Firebase einen netten Weiterleitungsfluss, der auf mobilen Geräten funktioniert.

Allerdings gibt es ein großes Problem ...

Dies wird das Access Token erhalten.

%Vor%

Das Zugriffstoken ist verfügbar und ich kann es verwenden, um das Laufwerk zu lesen / zu schreiben, ... für eine Stunde . Sobald dieser Token abgelaufen ist, kann ich nichts mehr tun. Der Benutzer ist weiterhin bei Firebase angemeldet, sodass ich die Firebase-Dienste weiterhin verwenden kann, aber ich muss den Benutzer zwingen, sich erneut anzumelden, um auf das Laufwerk zuzugreifen. Das geht nicht!

Ich suche nach dem GoogleUser.reloadAuthResponse () in Firebase.

  • Wie kann ich das machen?
  • Was ist die empfohlene Vorgehensweise zum Erstellen einer Web-App, die sowohl auf Firebase-Dienste als auch auf die G Suite zugreift?
  • Gibt es offizielle Beispiele?
Gary 29.12.2016, 21:37
quelle

2 Antworten

4

Sie verwenden bereits gapi, um das Zugriffstoken zu erhalten und es jede Stunde für die Integration mit der Google Drive-API zu aktualisieren. Bleib dran. Sie müssen die folgende API verwenden, um mit den Google-Anmeldeinformationen bei Firebase zu signieren:

var cred = firebase.auth.GoogleAuthProvider.credential(null, gapiAccessToken); firebase.auth().signInWithCredential(cred).then(function(user) { // You are signed in to Firebase now and do not need to re-sign in again. ... });

Sie sind jetzt bei Firebase angemeldet, während Ihr Zugriffstoken weiterhin über gapi aktualisiert wird. Firebase-Sitzungen sind unbestimmt, sodass Sie sich nicht erneut bei Firebase anmelden müssen.

    
bojeil 31.12.2016, 19:55
quelle
0

Wenn Sie nur versuchen, ein Token für authentifizierte Endpoint-Aufrufe zu erhalten, nachdem Sie fire base google angemeldet haben (z. B. zu Google Cloud-Endpunkten), können Sie Folgendes verwenden:

%Vor%

Das Firebase-ID-Token ist ein JWT und unterscheidet sich vom Token im Berechtigungsnachweis vom Sign-in-Redirect-Callback. Die Funktion getIdToken () aktualisiert das Token, wenn es benötigt wird, und gibt ein gültiges Token an den Rückruf zurück. Das Token im Berechtigungsnachweis aus dem Signir Redirect Callback wird in 1 Stunde ablaufen, wie das OP sagte, und kann nicht aktualisiert werden, ohne erneut zu versuchen, sich anzumelden.

Wenn Sie authentifizierte Endpunktaufrufe mit firebase google signin durchführen möchten, verwenden Sie getIdToken (). Folgen Sie dann den Anweisungen für Google Cloud-Endpunkte mit Firebase-Authentifizierung

    
caitoo0o 23.02.2018 21:13
quelle