Ich entwickle eine iOS-App in swift, die einen Benutzer erfordert, um ein Konto durch Verbinden ihres Facebook-Kontos zu erstellen. Vor einem Monat, als ich mich mit meinem eigenen Facebook-Konto anmeldete, war die von Firebase erstellte Benutzer-UID im Format "facebook: (facebook app id)". Das war, was ich wollte.Firebase erstellt kein Facebook-Konto Benutzer-ID mit der Facebook-App Benutzer-ID
In letzter Zeit jedoch erstellt Firebase, wenn ein Benutzer ein neues Konto erstellt, indem er sein Facebook-Konto mit meiner App verbindet, eine Benutzer-UID, die eine zufällige Zeichenfolge verwendet. Zum Beispiel: "E9FaL87wRmOKfhen2S6yszhCwtx1". Könnte das an dem neuen Firebase-Update liegen? Sollte ich den Migrationsprozess durchlaufen?
Hier ist mein Code für Kontoerstellung:
@IBAction func facebookAuthAction(sender: AnyObject) {
let facebookLogin = FBSDKLoginManager()
facebookLogin.logInWithReadPermissions(nil, fromViewController: nil, handler: {(facebookResult, facebookError) -> Void in
if facebookError != nil {
print("Facebook login failed. Error \(facebookError)")
} else if facebookResult.isCancelled {
print("Facebook login was cancelled.")
} else {
let accessToken = FBSDKAccessToken.currentAccessToken().tokenString
FIREBASE_REF.authWithOAuthProvider("facebook", token: accessToken, withCompletionBlock: { error, authData in
if error != nil {
print("Login failed. \(error)")
} else {
print("Logged in! \(authData)")
NSUserDefaults.standardUserDefaults().setValue(authData.uid, forKey: "uid")
FIREBASE_REF.childByAppendingPath("users").observeEventType(.Value, withBlock: {snapshot in
if snapshot.hasChild(authData.uid) == false {
self.createNewFBUser(authData.uid)
}
})
self.performSegueWithIdentifier("loginSegue", sender: self)
}
})
}
})
}
func createNewFBUser(uid: String) {
var emailAddress:String = ""
var firstName:String = ""
var lastName:String = ""
var pictureURL:String = ""
let parameters = ["fields": "email, first_name, last_name, picture.type(large)"]
FBSDKGraphRequest(graphPath: "me", parameters: parameters).startWithCompletionHandler {(connection, result, error) -> Void in
if error != nil {
print(error)
return
}
if let email = result["email"] as? String {
emailAddress = email
}
if let first_name = result["first_name"] as? String {
firstName = first_name
}
if let last_name = result["last_name"] as? String {
lastName = last_name
}
if let picture = result["picture"] as? NSDictionary, data = picture["data"] as? NSDictionary, url = data["url"] as? String {
pictureURL = url
}
let newUser = [
"provider": "facebook",
"firstName": firstName,
"lastName": lastName,
"email": emailAddress,
"picture": pictureURL
]
FIREBASE_REF.childByAppendingPath("users").childByAppendingPath(uid).setValue(newUser)
}
}
Ich denke, Sie sollten auf die neue Version der Firebase verschieben, ich denke, Google wird die "alte" Firebase bald herunterfahren –
* Firebaser hier * Die Firebase.com-Website wird in absehbarer Zukunft betriebsbereit bleiben. Die Firebase 2.x SDKs werden weiterhin unterstützt. Das heißt: Wir hoffen, dass sich unsere Entwickler für ein Upgrade auf unsere neue Firebase-Konsole und APIs entscheiden. –
@Dylan: Haben Sie dieses Projekt auf die neue [Firebase-Konsole] (https://console.firebase.google.com) aktualisiert? –