【问题标题】:iOS 9 Facebook permissions failingiOS 9 Facebook 权限失败
【发布时间】:2015-12-03 12:49:49
【问题描述】:

我正在使用 Xcode 7 beta 6、iOS 9 beta 5。
在我现有的代码中(适用于 iOS 7 和 8)我有这个:

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

        [login logInWithPublishPermissions:@[@"manage_pages"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
            if (error) {
                NSLog(@"There was an error with FB:\n %@",error.description);
            } else if (result.isCancelled) {

            } else {
                if ([result.grantedPermissions containsObject:@"manage_pages"]) {
                    NSLog(@"permissions granted! %@",[[FBSDKAccessToken currentAccessToken]permissions]);
                    // Do work
                    [self facebookInfo];
                }else{
                    NSLog(@"permissions NOT granted");
                }
            }
        }];

一旦应用程序切换到 Facebook 应用程序或 Safari,处理程序就会抛出错误

There was an error with FB:
 Error Domain=com.facebook.sdk.login Code=301 "(null)"

在设备上,权限页面显示在 Safari 中,一旦您同意权限,系统会提示您 Safari 想要打开我的应用程序备份。一旦应用程序重新打开,什么都不会发生,考虑到处理程序已经失败,这是有道理的。
任何人都可以对此有所了解吗?我正在努力寻找这方面的任何其他示例。
非常感谢,
卢克

【问题讨论】:

  • 检查你是否在任何地方多次调用fb-login方法。

标签: ios facebook facebook-login ios9


【解决方案1】:

如果您使用 Xcode 7 和 iOS 9 进行开发,则必须查看 Facebook SDK 的 App Transport Security 的更改。 你会得到信息 https://developers.facebook.com/docs/ios/ios9

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
【解决方案2】:

出于安全原因,iOS 9 要求应用将允许打开的应用列入白名单。请参阅此页面上的“将 Facebook 应用程序列入白名单”部分:https://developers.facebook.com/docs/ios/ios9

<key>LSApplicationQueriesSchemes</key>
<array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
</array>

【讨论】:

  • 我将 Facebook 应用添加到了白名单,但没有添加其他应用。我稍后会试试这个。谢谢。
  • 只是为了确认,添加这些并不能解决问题。切换到 Facebook(应用程序)或 Safari(未安装应用程序)时,处理程序仍然失败
【解决方案3】:

此问题的解决方案是 facebook SDK 似乎有问题。
将我的项目 pod 文件降级为:

pod 'FBSDKCoreKit', '~> 4.2.0'
pod 'FBSDKLoginKit', '~> 4.1.0'
pod 'FBSDKShareKit', '~> 4.1.0' 

我发现这个错误消失了,恢复了正常操作。
这似乎是一个广泛发现的错误,已开始出现在其他 SO 问题上。

【讨论】:

  • 你有没有找到另一种方法来解决它? xCode 的 iPhone (iOS8) 模拟器上的 4.6 对我来说也是同样的问题。
  • @mylogon 我遇到了同样的问题,我认为仅仅降级 sdk 并不能解决它。你有其他解决方案吗?
  • 我还没有回到这个项目。当我离开它时,这确实有效。正如 Chris pan 所说,使用不同的版本是不可取的,所以当我回到它时我会修复这个问题。尝试此方法,但将它们全部设置为 4.1.0 或 4.2.0。它应该有帮助(没有承诺)
  • 来自 FB 的最新文档显示“这是一个 Xcode 警告,表明 canOpenURL: 调用返回错误。只要你按照上面的描述在你的 plist 中配置了 LSApplicationQueriesSchemes 条目,你就可以忽略这个警告'link
【解决方案4】:

您可以使用 4.6 版的 SDK 并使用 iOS 9 和 Xcode 7 的 GM 种子再试一次吗?如果仍然存在问题,如果您可以向developers.facebook.com/bugs 提交报告以供我们帮助调试,那就太好了。谢谢!

(P.S. 你通常应该避免在 Podfile 中使用不同版本的工具包)

【讨论】:

    【解决方案5】:

    我也遇到了同样的问题。然后我一步一步地按照这个链接https://developers.facebook.com/docs/ios/ios9。 下载了最近的 sdk 并获得了所有必需的数据。

    【讨论】:

      【解决方案6】:

      在我的例子中,我使用FBSDKLoginButton 创建的登录按钮。我将FBSDKLoginButton 更改为UIButton。这对我有用。

      【讨论】:

        猜你喜欢
        • 2012-02-23
        • 1970-01-01
        • 2015-09-17
        • 2015-08-23
        • 1970-01-01
        • 2014-08-10
        • 1970-01-01
        相关资源
        最近更新 更多