Facebook SDK 4.5 IOS 9

16

我在使用新的FBSDK时遇到了问题。每当我尝试调用登录方法logInWithReadPermissions时,就会收到以下错误信息:

ERROR : "canOpenUrl : failed for url "fbauth2://" error: "(null)"

我按照dev.facebook上的ios9教程(https://developers.facebook.com/docs/ios/ios9)设置了我的配置.plist文件。因此,我得到了NSAppTransportSecurity字典和LSApplicationQueriesSchemes数组(其中包含字符串“fbauth2”)

你知道如何解决这个错误吗?


1
你解决过这个问题吗? - Can Poyrazoğlu
1
这个问题解决了吗? - Phil Andrews
7个回答

5
如果您仍然遇到问题,请重置模拟器,这对我很有效。

我在真实设备上遇到了这个问题,plist已更新。 - CQM
一直在循环运行,直到重置模拟器。谢谢! - kwcto

4
我遇到了与Google+登录库相同的问题,但我已经解决了Facebook在最新的SDK版本4.6.0上的更新!请记得在更新后更改您的plist键LSApplicationQueriesSchemes,如下所示:
<key>LSApplicationQueriesSchemes</key>
<array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
</array>

1
根据常见问题解答,需要注意:为什么我会看到类似“canOpenURL: failed for URL: "fb...://'”的控制台消息?这是Xcode的警告,表示canOpenURL:调用返回了false。只要您已按上述说明配置了plist中的LSApplicationQueriesSchemes条目,就可以忽略此警告。 - Henry T Kirk

3

1] 在Developer.facebook进行认证并生成Facebook Id,类似于:=>460481580805052

2] 设置Bitcode :从构建设置中选择“否”

3] 设置Plist文件

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb460481580805052</string>
        </array>
    </dict>
</array>

<key>FacebookAppID</key>
<string>460481580805052</string>

<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>akamaihd.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>facebook.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>fbcdn.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
    </dict>
</dict>

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fbapi20130214</string>
    <string>fbapi20130410</string>
    <string>fbapi20130702</string>
    <string>fbapi20131010</string>
    <string>fbapi20131219</string>
    <string>fbapi20140410</string>
    <string>fbapi20140116</string>
    <string>fbapi20150313</string>
    <string>fbapi20150629</string>
    <string>fbauth</string>
    <string>fbauth2 </string>
    <string>fb-messenger-api20140430</string>
    <string>fb-messenger-platform-20150128</string>
    <string>fb-messenger-platform-20150218</string>
    <string>fb-messenger-platform-20150305</string>
</array>

4] 下载4个类似的Sdk框架

=>Bolts.framework
=>FBSDKCoreKit.framework
=>FBSDKLoginKit.framework
=>FBSDKShareKit.framework

0

如果您已经在LSApplicationQueriesSchemes中有项目,请先放置Facebook项目。

这解决了我的问题。


你能详细说明一下吗?拜托了? - Mohsin Khubaib Ahmed
这是错误的方式 <key>LSApplicationQueriesSchemes</key> <array> <string>com.sample.appid</string> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array> - Ponja
感谢您联系我。请在这里解释一件事情; com.sample.appid 是捆绑标识符还是例如我的应用程序在 Facebook 上是 xyz,我的 appid 是 1234567890,因此这是 com.xyz.1234567890?这两者中的哪一个..不过感谢您的澄清。 - Mohsin Khubaib Ahmed
这是一个 bundle id 的示例。只需将您的 Facebook 密钥放在数组开头,就可以解决您的问题了。 - Ponja

0

我曾经遇到同样的问题,但在安装了 Facebook 的手机上运行该应用程序后问题得以解决。 可能是因为模拟器无法正常工作或需要安装 Facebook。 还有人发现其他问题吗?


模拟器对我来说是有效的。我只需要添加 fbauth2。它将重定向到Facebook网站。 - Harry Ng

0

来自Facebook常见问题解答,链接如下: https://developers.facebook.com/docs/ios/ios9

这是Xcode的一个警告,表示canOpenURL:调用返回false。只要您按照上述方法配置了plist中的LSApplicationQueriesSchemes条目,您就可以忽略此警告。


-2
在 info.plist 中使用方法如下:
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb123124123123</string>
            <string>fbauth2</string>
        </array>
    </dict>
</array>

之后,您应该从编辑器中删除您的应用程序并重新启动。


那是错误的。这将意味着您的应用程序响应带有fbauth2:方案的URL。该方案是Facebook的责任。 - Milan Cermak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接