gpt4 book ai didi

iOS/Swift : PFFacebookUtils. logInWithPermissions 返回零用户和错误

转载 作者:搜寻专家 更新时间:2023-10-31 19:35:25 25 4
gpt4 key购买 nike

在我的应用程序中,我通过 Parse 的 PFFFacebookUtil 类登录用户。如果用户存在于手机上(即在“设置”>“Facebook”中登录到 FB),那么一切都会按预期进行。

但如果他们未通过设置登录,则用户将被带到 WebView 以登录。用户输入凭据后,返回 block 应该接收用户或一个错误,但在这种情况下,用户和错误 都是零。

    let permissionsArray = ["user_about_me", "email"];
PFFacebookUtils.logInWithPermissions(permissionsArray, block: {
(user: PFUser!, error: NSError!) -> Void in
if user != nil {
//successful login
} else if error != nil{
//unsuccessful login
} else {
//this is what I get
}
}

我们目前正在运行 Parse 1.4.2

最佳答案

问题是我没有在 AppDelegate 调用中调用 FBAppCall.handleOpenURL():

application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) 

当我从网络认证回来时。通过不调用 FBAppCall.handleOpenURL(),Parse 认为我们取消了身份验证。 Parse 文档指出“用户和错误均为零 - 如果用户通过切换回应用程序取消身份验证。”

此方法应该调用 FBAppCall.handleOpenURL 以将身份验证传递回应用程序。在我的例子中,我也使用这个调用进行深度链接,但我没有正确处理逻辑。我最初是在检查 sourceApplication 对象以查看它是否是“com.facebook.Facebook”。如果它返回 true,那么我将调用 FBAppCall.handleOpenURL()。今天调试时,我注意到源应用程序实际上是“com.apple.mobilesafari”。 检查 sourceApplication 无论如何都不是最好的检查方法(尝试 url.host 之类的东西),但在这种情况下,这就是问题所在。

这是固定的代码片段:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) {
if (url.host == DEEP_LINKING_HOST) {
//Deep linking code here...
} else if sourceApplication == "com.apple.mobilesafari" {
return FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication, withSession: PFFacebookUtils.session())
}
}

这里的要点是我没有调用 FBAppCall.handleOpenURL()。结果,应用程序认为我取消了登录并给了我一个 nil user 和错误。

关于iOS/Swift : PFFacebookUtils. logInWithPermissions 返回零用户和错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27387877/

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