2017-09-09 1 views
1

Wenn Benutzer zuerst meine App ausführen, erstellt sie ein anonymes Konto für sie, die, wenn sie sich für die Verwendung von Funktionen höherer Ebene entscheiden, in eine E-Mail umgewandelt werden authentifizierte KontoFirebase-Auth-Linking-Fehler - Benutzer kann nur mit einer Identität für den angegebenen Provider verknüpft werden

-Code für Anon Zeichen in unkompliziert ist (direkt von dem docs genommen)

// No user is signed in. 
Auth.auth().signInAnonymously() { (usr, err) in 
    if (err == nil) { 
     print("Anon User ID \(usr!.uid)") 
    } else { 
     print("Anon auth error \(String(describing: err!.localizedDescription))") 
    } 
} 

bei der Registrierung ich ein neues Konto mit E-Mail-Anmeldeinformationen und einen Link zu dem anonymen Konto erstellen wie so

Auth.auth().createUser(withEmail: email, password: password) { (user, err) in 
    if (err != nil) { 
     print("Error registering \(String(describing: err!.localizedDescription))") 
    } else { 
     let credential = EmailAuthProvider.credential(withEmail: email, password: password) 
     Auth.auth().currentUser!.link(with: credential, completion: {(user, err) in 
      if (err != nil) { 
       // Error 
      } else { 
       // Linked 
      } 
     }) 
    }) 

Problem ist jedes Mal, wenn ich das bekommen

und ich keine Konten auf alle

Konten, anonym und E-Mail-Auth in Firebase registriert „Benutzer kann nur eine Identität für den entsprechenden Provider verknüpft wird“ sind erfolgreich erstellt, aber kann nur nicht verknüpfen

Antwort

1

Sie können keine 2 vorhandenen Firebase-Benutzer verknüpfen. Sie können eine neue Berechtigung nur mit einem vorhandenen Benutzer verknüpfen. Wenn Sie den Benutzer registrieren, sollten Sie einfach currentUser.link withCredential für den anonymen Benutzer verwenden, der die E-Mail-/Kennwortberechtigung verwendet, ohne zuvor createUser aufzurufen. Dadurch wird der anonyme Benutzer grundsätzlich auf einen E-Mail-/Kennwortbenutzer aktualisiert.

Verwandte Themen