Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 9 Facebook SDK登录/共享_Ios_Iphone_Facebook_Ios9_Facebook Sdk 4.0 - Fatal编程技术网

iOS 9 Facebook SDK登录/共享

iOS 9 Facebook SDK登录/共享,ios,iphone,facebook,ios9,facebook-sdk-4.0,Ios,Iphone,Facebook,Ios9,Facebook Sdk 4.0,我在iOS 9上使用最新的Facebook SDK(4.6)时遇到了一个问题。要授权用户,我使用FBSDKLoginManager。我已尝试设置此选项: loginManager.loginBehavior = FBSDKLoginBehaviorNative; 但SDK似乎仍然总是使用SFSafariViewController来授权Facebook 这就是我面临的问题。如果用户在其设备上安装了带有FacebookAccountA的FB应用程序,然后尝试使用我的应用程序进行身份验证,则会显示

我在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帐户验证了我的应用程序,而不是在他们的本机应用程序上登录,那么他们最终可能会发布到一个与他们用于验证我的应用程序的帐户不同的帐户。有没有办法防止这种情况


提前感谢。

使用SLComposer ViewController进行Fb共享。它将使用ios设备默认的Facebook SDK登录或已安装的应用程序登录

以下是这方面的参考:

希望这有帮助

这是设计的

在FB SDK v4.6和v3.24中,我们默认使用Safari View Controller,而不是快速切换到本机Facebook应用程序。在iOS 9中,快速应用程序切换流生成两个间隙“ExampleApp想打开Facebook”和“Facebook想打开ExampleApp”

对于在iOS上登录Safari的数亿人来说,他们有一个很棒的体验。

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

感谢您的回答,但我想使用用于验证我的应用程序的Facebook凭据(通过SFSafariViewController)进行共享。这样做不行,对吗?对我来说也是一样。有什么解决方案吗?如果你想通过facebook应用程序登录,请看我的答案,谢谢,看来唯一的选择就是你说的。我不介意通过SFSafariViewController登录,如果它没有引起我所看到的问题。@haplo1384您对上述问题有任何解决方案吗?@AbilashBNair我已经离开这个项目,最近没有测试过。在下面的回复中,Simon Cross表示这是Facebook正在解决的问题,所以我希望他们现在已经解决了。感谢Simon,我对使用Safari View Controller验证用户没有问题。问题是,即使在使用Safari View Controller进行身份验证后,FBSDKShareDialog似乎默认使用本机应用程序的Facebook帐户,这可能不同于用户通过Safari View Controller对我的应用程序进行身份验证时使用的Facebook帐户。这是故意的吗?@haplo1384是故意的,因为这是一个已知的问题。“我们正在寻找方法来检测和减轻这种情况。@据我所知,你有近10亿人在使用Facebook应用程序。只需按下两个按钮,而不必输入用户名和密码的用户群不是更大吗?@Simon Cross,在Safari中输入用户名和密码似乎比这两个按钮增加了更多的摩擦。你知道这两种方法之间的下降率吗?我同意使用Sarari View Controller-我只是担心许多用户不知道他们的fb密码。通常情况下,人们登录到fb应用程序,但从不注销。他们将不得不不遗余力地重置密码,并做所有这些额外的工作,以便他们可以使用你的应用程序。
let dialog = FBSDKShareDialog()
dialog.mode = .Native
if !dialog.canShow() {
    self.mode = .Automatic
}