iOS / Swift / FBSDKLoginKit:使用FBSDKLoginManager()登录。通过将result.isCancelled设置为true,logInWithReadPermissions失败

时间:2016-10-03 21:42:48

标签: ios swift facebook-graph-api fbsdkloginkit

我正在开发App,其中我添加了FBSDKLoginKit以允许用户使用Facebook登录。输入Facebook用户ID和密码后,我会看到下面的页面。 enter image description here

现在,我按下确定按钮,我看到空白页。

enter image description here

正如所料,我不应该看到空白页面。所以我按下左上角的Done按钮,从SDK编程调用函数handleImplicitCancelOfLogIn,我看到登录不成功,并将其路由到app的登录主页。

我在调试时没有看到任何错误,但是当我按下Done按钮时,我看到标志result.isCancelled设置为true(因为完成按钮点击调用函数handleImplicitCancelOfLogIn)

   FBSDKLoginManager().logInWithReadPermissions(["public_profile"], fromViewController: hostViewController) { (result, error) in
        if error != nil || result.isCancelled {
            completion(error: error ?? NSError(domain: "Facebook Login Failed", code: -1, userInfo: nil))
        }

在上面的调用中,我看到错误等于nil,但result.isCancelled设置为true。

我检查了下面列出的与此类似的其他线程,我确信所有与Facebook相关的电话都是他们的并且工作正常。

  1. Facebook FBSDKLoginManager/logInWithReadPermissions Swift Example not using Parse
  2. Facebook login fails (always isCancelled) after upgrading to SDK 4.1
  3. 这也适用于iOS 8和9,这在第一次开发时有效。

    当前API版本“4.12.0”,Xcode版本 - 版本7.3(7D175),iOS 8.0和9.0 如果我使用iOS 8,我会在Safari网页上看到奇怪的回复。

    任何线索/提示都将不胜感激。如果您需要了解更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:3)

您需要在AppDelegate中实现回调方法。适用于iOS 9.0及更高版本的UIApplicationDelegate application:openURL:options:。适用于iOS 8.0的application:openURL:sourceApplication:annotation:

这个问题已在这里得到解答:Facebook SDK login never calls back my application on iOS 9