11

Ich habe eine Webanwendung mit Firebase erstellt. In meiner Web-App habe ich Google, Firebase, Twitter Signup/Sign-in-Funktionen.Kann ich einen föderierten Benutzer in Firebase manuell mit Admin-Authentifizierung API erstellen?

Jetzt möchte ich dies mit meinem api.ai Agent integrieren und eine nahtlose Kontoverknüpfung haben. Daher werden Benutzer ihre Googel Home/Assistant App von mobilen Geräten verwenden, um sich mit meinem Agenten zu verbinden. Zu diesem Zeitpunkt habe ich die Google-Konto-ID, Google E-Mail, den Namen des Nutzers.

Wenn Benutzer bereits vorhanden ist, kann ich die von meinem Agenten benötigten Token senden. Wenn der Benutzer jedoch neu ist, möchte ich das Konto in meiner Firebase-Datenbank erstellen. Ich konnte keine Möglichkeit finden, ein föderiertes Konto in Firebase manuell zu erstellen (aus der Nodejs-Anwendung/Cloud-Funktion)!

Ich weiß, es gibt eine Möglichkeit, create a email + dummy password account, aber das ist nicht das, was ich suche. Da der Benutzer sich beim Versuch, sich bei meiner Web-App anzumelden, mit einem Dummy-Passwort registriert, würde er seine Google Sign-in-Funktion verwenden.

Wenn ich E-Mail-und Dummy-Passwort erstellen, ist der Fluss nicht gut und ich muss die Benutzer zwingen, Passwort zu ändern und ihre Google-Konten erneut verknüpfen, wenn sie zu meinem Web-Kanal kommen!

Es gibt CLI Ansatz, wo ich import users from the file. Wenn das eine Möglichkeit ist kann mir bitte jemand helfen wie ich das in einer Cloud Funktion erledigen kann?

Antwort

0

DIES IST NICHT EINE KOMPLETTE AUF DIE

Basierend auf der firebase tools import option Ich habe ein trimed unten Kern erstellt, mit der ich in der Lage bin den Import aus einer Wolke Funktion auszulösen. Der einzige Fehler, dem ich gegenüberstehe, ist der Ort, an dem ich das Bearer Access Token übergeben muss, um die Aktion auszuführen.

Ab sofort habe ich die getAccessToken Methode innerhalb der import/api.js kurzgeschlossen. Dies ist der Ort, an dem ich Hilfe vom Firebase-Team benötige, um das Zugriffs-Token direkt für den Firebase-Administrator zu erhalten oder den Check zu umgehen, wenn die Anfrage innerhalb einer Cloud-Funktion erfolgt!

getAccessToken: function() { 
    return Promise.resolve({access_token: accessToken}); 
    // return accessToken ? RSVP.resolve({access_token: accessToken}) : require('./auth').getAccessToken(refreshToken, commandScopes); 
    }, 

In der obigen Funktion wird der kommentierten Code tatsächlich eine laufende accessToken durch den Benutzer erhalten bekommen, während die firebase import von den CLI-Tools durchführen. Als ein Befehlszeilenprogramm fragt der Benutzer nach der Berechtigung, aber wenn er in einer Cloud-Funktion ausgeführt wird, sollte es eine der folgenden Optionen sein, über die ich nachdenken könnte!

a) Da die Cloud-Funktionen in den Admin-Vorrechten ausgeführt werden, ignorieren Sie die Berechtigungen! b) oder stellen Sie Mittel zur Verfügung, um das Zugriffstoken direkt aus dem Admin SDK zu erhalten.

Das Wesentliche is present in here in github. Ich habe das meiste davon genommen, wie es von der firebase tools project ist, und ein bisschen optimiert, um es innerhalb der cloudFunctions funktionieren zu lassen. Ich habe versucht, so wenig Code wie möglich aus den Firebase-Tools zu holen.

Als ich dies ausführen, die Fehler ich sind an der Linie immer bin 35 lib/import/api.js:

<<< HTTP RESPONSE BODY 
{ 
    "error":{ 
     "errors":[ 
     { 
      "domain":"global", 
      "reason":"authError", 
      "message":"Invalid Credentials", 
      "locationType":"header", 
      "location":"Authorization" 
     } 
     ], 
     "code":401, 
     "message":"Invalid Credentials" 
    } 
} 
Verwandte Themen