Ich bin nicht in der Lage zu tun, erfolgreich, folgte ich die folgenden Schritte als auf Firebase Docs angewiesen:Wie mehrere Auth Provider zu einem Firebase-Konto verknüpfen?
- im Gebrauch der Unterzeichnung der vorhandenen Authentifizierungsanbieter (mein Fall : facebook).
- Füllen Sie das Anmelde-Flow für den neuen Authentifizierungsanbieter bis zu, aber nicht einschließlich, einer der
Auth.signInWith
Methoden aufrufen (meinem Fall: Ich möchte E-Mail & Passwort und Google OAuth verbinden).. Also das ist der Schritt, über den ich mich nicht im Klaren bin, ich habe einen neuen Provider mitvar provider = new firebase.auth.GoogleAuthProvider();
erstellt und ich habeFirebase.auth().signInWithPopup(provider)
nicht gemacht. - Dann authcredential für Google zu bekommen Ich betreibe
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
(ich einen undefinierten googleUser Fehler erhalten) dieser Fehler scheint angemessen, da ich in der Verwendung von Google Oauth nicht unterzeichnet haben, aber das ist, was die zweiten Schritte erklärt - (nicht signin) und dann dieser Befehl mit dem aktuellen Benutzer zu verbinden, die auf einem Facebook-Provider ist
auth.currentUser.link(credential)
Mein Verständnis ist, dass current zu meinem bestehenden Provider verbunden werden muss (Facebook). Scheinbar wird die Berechtigungsvariable für Google nie berechnet. Jeder mit einem funktionalen Codebeispiel würde wirklich helfen.
Sie erwähnten es manuell, gibt es eine andere automatische Art der Verknüpfung von Anbietern? – jasan
Nicht genau. Ich denke, ich habe das nicht gut erklärt. Ich meinte manuell wie im Entwickler gewählt, um basierend auf einigen Bedarf zu verknüpfen (brauchen Google-Provider für den Zugriff auf Google Kalender, Upgrade eines anonymen Benutzers, etc). Der andere Fall ist, wenn der Backend-Server dies aus Sicherheitsgründen benötigt. Zum Beispiel signieren Sie Firebase mit Google, die [email protected] zurückgibt. Der Benutzer meldet sich dann mit Facebook auf einem separaten Gerät an, das die gleiche E-Mail-Adresse [email protected] zurückgibt. In diesem Fall wird ein Fehler ausgegeben, dass die Anmeldeinformationen bereits verwendet werden. In diesem Fall müssen Sie Konten verknüpfen, um beide Anbieter zu verknüpfen. – bojeil
@bojeil Ich sehe, dass Sie 'linkWithPopup()' verwendet haben. Was ist dann "linkWithCredential()", das im [Firebase Tutorial] erwähnt wird (https://firebase.google.com/docs/auth/android/account-linking#link-auth-provider-credentials-to-a-user -Konto)? –