【发布时间】:2016-07-11 23:58:24
【问题描述】:
我正在尝试将 Facebook 登录/注册集成到我的应用程序中,以便与标准的电子邮件登录/注册一起使用。我正在使用 Swift 并已迁移到 Parse Server。
我已按照 Facebook 用户上的 Parse iOS 指南进行操作。但是,根据那里的所有教程和文档,使用 Parse Server,Facebook 集成无法正常工作。
当现有的 PFUser 在应用中使用 Facebook 登录时,如何将他们与其 Facebook 帐户关联?
我正在使用本指南 (https://parse.com/docs/ios/guide#users-linking) 中的 Swift 代码将现有 PFUser 关联到 Facebook 帐户(请参见下面的代码),但是,由于某些未知原因,此代码未执行,因此未执行将他们通过电子邮件创建的用户现有帐户与具有相同电子邮件的 Facebook 帐户注册。 为什么这段代码没有执行?
更新:isLinkedWithUser 方法要求用户登录。但是,当用户退出/刚刚下载应用程序时,PFUser.currentUser() 为 nil,因为用户未登录。因此,linkUserInBackground 方法将不知道将 Facebook 帐户链接到哪个PFUser。我相信这些方法现在没用了,因为它们是事后链接(在他们登录之后)。但我不想创建两个用户。
是否有 Cloud Code 示例或其他 Swift 逻辑来完成此操作?
我不确定问题是什么。感谢任何帮助!
来源:https://parse.com/docs/ios/guide#users-facebook-users
func fbLoginButtonTapped() {
print("fbLoginButtonTapped")
let permissions = ["public_profile", "email"]
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions, block: {
(user: PFUser?, error: NSError?) -> Void in
if let user = user {
if user.isNew {
print("User signed up and logged in through Facebook!")
} else {
print("User logged in through Facebook!")
// This API doesn't seem to be working with Parse Server
if !PFFacebookUtils.isLinkedWithUser(user) {
PFFacebookUtils.linkUserInBackground(user, withReadPermissions: nil, block: {
(succeeded: Bool?, error: NSError?) -> Void in
if error == nil {
print("Woohoo, the user is linked with Facebook!")
} else {
print("User is not linked with Facebook.")
}
})
}
dispatch_async(dispatch_get_main_queue(), { () -> Void in
let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("HomeNavigationController") as! UINavigationController
self.presentViewController(viewController, animated: true, completion: nil)
})
}
} else {
print("User cancelled the Facebook login.")
}
}
【问题讨论】:
-
这个问题你解决了吗?如果是这样,您能否更新您的问题?
标签: ios swift facebook parse-platform parse-server