gpt4 book ai didi

swift - Firebase 不会使用 Facebook 应用程序用户 ID 创建 Facebook 帐户用户 UID

转载 作者:行者123 更新时间:2023-11-30 10:03:10 26 4
gpt4 key购买 nike

我正在 swift 中开发一个 iOS 应用程序,它要求用户通过连接他们的 Facebook 帐户来创建一个帐户。一个月前,当我使用自己的 Facebook 帐户注册进行测试时,Firebase 创建的用户 UID 的格式为“facebook:(facebook app id)”。这就是我想要的。

但是,最近每当用户通过将其 Facebook 帐户与我的应用连接来创建新帐户时,Firebase 都会使用随机字符串创建用户 UID。例如:“E9FaL87wRmOKfhen2S6yszhCwtx1”。这可能是因为新的 Firebase 更新吗?我应该完成迁移过程吗?

这是我创建帐户的代码:

@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)
}
}

最佳答案

当您将项目升级到new Firebase Console时,您的用户将迁移到新的身份验证后端。

升级后新创建的用户将获得新格式的 uid。看这个post on the firebase-talk group了解有关此更改以及何时将其应用于现有(未升级)Firebase 应用的更多信息。

请注意,Firebase 多年来一直建议不要依赖 uid 的格式。最好将其视为标识用户的不透明字符串。

关于swift - Firebase 不会使用 Facebook 应用程序用户 ID 创建 Facebook 帐户用户 UID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37367877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com