Ich habe Firebase-Authentifizierung für meine iOS-App mit Facebook, Google & E-Mail/Passwort anmelden und es funktioniert alles in Ordnung. Diese Authentifizierung findet nur statt, wenn der Benutzer auf Teile mit hoher Priorität meiner App zugreifen möchte (d. H. Ich muss die Benutzer nicht anmelden, um die App zu verwenden).Firebase-Authentifizierung: Verknüpfung mehrerer Konten in Swift
Beim Start der App signiere ich die Benutzer anonym im Hintergrund und das funktioniert auch gut.
Ich habe die documentation gelesen, aber ich bin zu kämpfen, den Code verstehen erforderlich, damit ich ein anonymes Konto auf einen Facebook/E-Mail-Konto in dem folgenden Fluss unterzeichnet verknüpfen:
- neue Benutzer öffnen App
- Benutzer anonym im Hintergrund (neu user.uid „A“ erstellt)
- niedriger Priorität gespeicherten Daten gegen anonyme Benutzer in Echtzeit DB Firebase
- Benutzer trifft ein hoher Priorität Bereich so muss angemeldet authentifizieren
- Benutzer Zeichen Facebook (neu user.uid "B" erstellt) in mit
- vorherigen user.uid "A" verknüpft werden muss, um user.uid "B"
Meine Methode wie zur Zeit aussieht dies:
func signupWithFacebook(){
// track the anonymous user to link later
let prevUser = FIRAuth.auth()?.currentUser
FBSDKLoginManager().logInWithReadPermissions(["public_profile", "email"], fromViewController: self) { (result, error) in
if let token = result?.token?.tokenString {
let credential = FIRFacebookAuthProvider.credentialWithAccessToken(token)
FIRAuth.auth()?.signInWithCredential(credential, completion: { (user, error) in
if user != nil && error == nil {
// Success
self.success?(user: user!)
dispatch_async(dispatch_get_main_queue(), {
self.dismissViewControllerAnimated(true, completion: nil)
})
}
})
}
}
}
Alle Hinweise, um die Verwirrung zu entfernen wäre großartig.
UPDATE: Ich habe erkannt, ich, weil der Benutzer verwirrt über die App-Logik war während des Tests erstellt werden. Anstatt zwei separate Benutzer für das obige Szenario zu erstellen (eines, das über Facebook und ein anderes anonym authentifiziert wurde), passiert nur, dass das ursprüngliche anonyme Benutzer.UID "A" mit einigen Facebook-Authentifizierungsdaten "verknüpft" ist. In der Firebase-Konsole wird dies durch die anonyme uid angezeigt, die von anonym zu einem mit dem Facebook-Logo daneben wechselt.
Dies ist, was meine Arbeitsweise wie folgt aussieht:
func signupWithFacebook(){
FBSDKLoginManager().logInWithReadPermissions(["public_profile", "email"], fromViewController: self) { (result, error) in
if let token = result?.token?.tokenString {
let credential = FIRFacebookAuthProvider.credentialWithAccessToken(token)
FIRAuth.auth()?.currentUser!.linkWithCredential(credential) { (user, error) in
if user != nil && error == nil {
// Success
self.success?(user: user!)
dispatch_async(dispatch_get_main_queue(), {
self.dismissViewControllerAnimated(true, completion: nil)
})
} else {
print("linkWithCredential error:", error)
}
}
}
}
}
Um Feuerbasis-Authentifizierung verwenden sie eine E-Mail/Passwort oder facebook/gmail Authentifizierung erfordert. Wie authentifizieren Sie sich anonym? – NSGangster
Ok. Lesen Sie die Dokumentation durch und sie haben sie seit der letzten Nutzung der Firebase ein wenig verändert. Ich werde es mir ansehen. – NSGangster
@ NSGangster Ich benutze 'FIRAuth.auth() ?. signInAnonymouslyWithCompletion()' von https://firebase.google.com/docs/auth/ios/anonymous-auth – James