Ios 解析:Facebook用户取消链接并再次登录将创建两个用户表条目
我看到我通过Facebook代码解析登录时是这样的Ios 解析:Facebook用户取消链接并再次登录将创建两个用户表条目,ios,swift,parse-platform,Ios,Swift,Parse Platform,我看到我通过Facebook代码解析登录时是这样的 PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) { (user: PFUser?, error: NSError?) -> Void in if let user = user { if user.isNew { println("User signed up and
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) {
(user: PFUser?, error: NSError?) -> Void in
if let user = user {
if user.isNew {
println("User signed up and logged in through Facebook!")
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
println("Error: \(error)")
}
else
{
let userEmail : NSString = result.valueForKey("email") as! NSString
println("User Email is: \(userEmail)")
user["email"] = userEmail
}
})
} else {
println("User logged in through Facebook!")
}
} else {
println("Uh oh. The user cancelled the Facebook login.")
}
}
注销方法如下所示
PFFacebookUtils.unlinkUserInBackground(PFUser.currentUser()!) { (succeeded: Bool, error: NSError?) -> Void in
if succeeded {
FBSDKAccessToken.setCurrentAccessToken(nil)
FBSDKProfile.setCurrentProfile(nil)
PFUser.logOut()
} else {
println("Error")
}
}
当用户第一次登录时,我看到解析在用户表中创建了一行,authData指向Facebook。注销后,此authData将被擦除
问题是当用户再次登录时,parse会创建另一行并将authData链接到Facebook,是否有办法避免这种情况。我想使用之前创建的同一行并链接到Facebook登录,而不是每次用户注销并登录时创建多行
我可以检查电子邮件是否已经存在,但为此,我需要用户再次登录的电子邮件,并且在这种情况下,已经创建了一个新行。您需要将用户链接到facebook帐户,下面的代码为您执行此链接:
if !PFFacebookUtils.isLinkedWithUser(user) {
PFFacebookUtils.linkUserInBackground(user, withReadPermissions: nil, {
(succeeded: Bool?, error: NSError?) -> Void in
if succeeded {
println("Woohoo, the user is linked with Facebook!")
}
})
}
链接时发生的步骤与登录非常相似。这个
不同之处在于,成功登录后,将更新现有的PFUser
使用Facebook信息。未来通过Facebook登录的用户现在将登录
在用户的现有帐户中
没错,同一个页面也告诉我们——我们的SDK接收用户的Facebook访问数据并将其保存给一个用户。如果不存在具有相同Facebook ID的PFUser,则会创建一个新的PFUser。这解释了为什么在我的案例中创建新行。@sysuser就是这样,我很高兴你得到了它,祝你的应用好运!谢谢,文档让它变得简单了。我把这个
isLinkedWithUser
code称为哪里?另外,我是否同时调用该函数和loginInBackground
。因为对于此调用FFacebookUtils.linkUserInBackground(user,withReadPermissions:nil,{
您需要传入user
对象,此时,新的用户条目已经在Parse中的user表中创建。我看不出这是如何解决问题的。您解决了这个问题吗?