嘿嘿
我对 iOS 6 的新 Facebook SDK 3.2 有一个大问题(我使用 iPhone 模拟器进行测试)。我已经完全按照操作方法中的描述实现了 Facebook 登录。唯一的区别是我没有在应用程序委托(delegate)中实现它。我在一个单独的 mm 文件中实现了 Facebook-Stuff(但我也在应用程序委托(delegate)中测试了代码 -> 同样的问题!)。
这就是发生的事情: 如果我尝试登录,屏幕中间会弹出一个 UIView(可能是 UIWebView),我可以输入我的帐户凭据。接下来是权限确认屏幕。我单击“确定”按钮,然后出现错误: “操作无法完成。(com.facebook.sdk 错误 2。)” UserInfo=0x14bbd590 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorLoginNotCancelled}
我已经体验过旧的 facebook-sdk v2。整合起来没有任何问题!但对于新版本和 iOS 6,我无法让它运行:-(
我认为一个重要的问题可能是 UIApplicationDelegate 的 openURL 方法没有被调用!我已将 AppID 插入 info.plist 并添加了 URL 类型。它看起来像这个片段:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb111111111111111</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>111111111111111</string>
我还使用wireshark分析了该网址:
我还仔细检查了所有相关位置的应用程序 ID 是否相同(info.plist/url/dev-site: bundle ID)!
不知道这是否是一个重要信息,但我们在应用程序中不使用任何 xib 文件,因为它是一个使用我们自己的 3d 引擎的 3D 游戏。并且提供的屏幕方向仅为横向。我使用 Xcode 版本 4.5.2 (4G2008a)。
有什么想法吗?
3 个附加问题(也许它可以帮助我获取更多信息):
我如何获得有关问题所在的更多信息? “com.facebook.sdk error 2”不是很有帮助:-/
是否有一种简单的方法可以测试 UIApplicationDelegate 中 openURL 方法的自动重定向调用?
有没有办法强制sdk使用safari浏览器而不是 View 登录?
提前致谢
马丁
最佳答案
我找到了解决办法: 您必须在“application: didFinishLaunchingWithOptions”方法中调用“canOpenURL”方法,如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"fb111111111111111"]];
...
return YES; //or NO; doesn't matter
}
现在的效果是 sdk 尝试使用 safari 浏览器登录,而不是使用愚蠢的 WebView :-)
_
提示:
您可以直接从info.plist文件中读取URL方案:
NSString urlScheme = [[[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"] objectAtIndex:0] objectForKey:@"CFBundleURLSchemes" objectAtIndex:0];
关于ios - 适用于 iOS 6 的 Facebook SDK 3.2 : Can't login -> openURL not called/AppId & URL is correct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15024551/