如何使用SDK 3.1在iOS上登录原生Facebook?

我下载了新的Facebook iOS SDK 3.1 ,它承诺提供本机登录提示 。 我在iOS 6设备上运行了他们的示例登录应用程序。 当我尝试连接Facebook时,我没有获得原生登录。 相反,推出了Facebook应用程序 – 与旧版SDK相同。 他们的Facebook登录按钮基本上是这样的:

[appDelegate.session openWithCompletionHandler:^(FBSession *session, FBSessionState status, NSError *error) { [self updateView]; } ]; 

我想也许示例代码没有调用正确的函数。 所以我尝试了FBSession的其他登录function。

 [appDelegate.session openWithBehavior:FBSessionLoginBehaviorWithNoFallbackToWebView completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { [self updateView]; } ]; 

我尝试了所有可能的行为,但没有一个弹出本机登录提示。

您是否首先从iOS设置登录Facebook?

一旦你这样做,他们的示例项目Scrumptious将在你尝试连接时使用本机登录提示。

阅读本文: https : //developers.facebook.com/docs/howtos/ios-6/#nativeauthdialog

基本上,您必须先请求基本权限和读取权限,然后单独请求发布权限。

这是设计的,并在https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/3.1/upgrading-from-3.0/的第二部分中进行了描述。

基本上,您无法通过iOS6对话框请求读取和发布权限。 因此,您或多或少需要以交错的方式请求它们(例如,首次登录时读取,然后在您的应用程序实际需要发布时发布)。

如果您坚持使用已弃用的方法尝试同时进行读取和发布,则SDK别无选择,只能返回Web或应用程序切换技术。