iOS 9 Facebook SDK登录/共享

时间:2015-09-23 17:17:59

标签: ios iphone facebook ios9 facebook-sdk-4.0

我在iOS 9上使用最新的Facebook SDK(4.6)遇到了一个问题。为了授权用户,我使用了FBSDKLoginManager。我试过设置这个:

loginManager.loginBehavior = FBSDKLoginBehaviorNative;

但SDK似乎仍然总是使用SFSafariViewController来授权Facebook。

这是我面临的问题。如果用户使用FacebookAccountA在其设备上安装了FB应用程序,然后尝试使用我的应用程序进行身份验证,则会显示此SFSafariViewController,他们可以使用FacebookAccountB(单独的FB帐户)对应用程序进行身份验证。

然后在应用程序中,我尝试与以下内容分享:

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:shareString];

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
dialog.fromViewController = self;
dialog.shareContent = content;
dialog.delegate = self;
[dialog show];

共享对话框的默认设置最终是FBSDKShareDialogModeShareSheet。共享表在应用程序中正确显示,并且帖子似乎有效,但链接发布到FacebookAccountA(本机应用程序帐户),而不是FacebookAccountB(通过我的应用程序进行身份验证的链接)。

因此,如果用户碰巧使用不同于他们在其原生应用上登录的Facebook帐户对我的应用进行身份验证,他们最终可能会发布到与用于验证我的应用的帐户不同的帐户。有办法防止这种情况吗?

提前致谢。

3 个答案:

答案 0 :(得分:5)

这是设计的。

在FB SDK v4.6和v3.24中,我们默认使用Safari View Controller,而不是快速应用程序切换到本机Facebook应用程序。在iOS 9中,快速应用程序切换流程会生成两个插页式广告" ExampleApp希望打开Facebook"和#34; Facebook想要打开ExampleApp"。

对于在iOS上登录Safari的数亿人来说,他们拥有非常棒的体验。

答案 1 :(得分:1)

使用SLComposerViewController进行Fb共享。它将使用您的ios设备默认Facebook sdks登录或您安装的应用程序登录。

以下是对此的参考: Tutorial for SLComposeViewController sharing

希望这有帮助!

答案 2 :(得分:0)

是的,它是在iOS 9上设计的,但我们可以轻松解决它!

let dialog = FBSDKShareDialog()
dialog.mode = .Native
if !dialog.canShow() {
    self.mode = .Automatic
}

耶!