Facebook登录 - iOS 9 - 没有Safari

32 facebook objective-c ios ios9 xcode7

在iOS 8中使用logInWithReadPermissions登录时效果很好,但是在更新到iOS 9后不久它就会打开Safari或模态UIWebView.

有没有人有同样的问题?

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login setLoginBehavior:FBSDKLoginBehaviorNative];
[login logInWithReadPermissions:@[@"public_profile",@"email"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    NSLog(@"");
}];
Run Code Online (Sandbox Code Playgroud)

Luc*_*ito 39

似乎在iOS9 +中使用newests FB SDK无法获得以前的行为.您可以使用旧的SDK来执行此操作.以下是facebook对该问题的回复:在此输入图像描述

  • @SimonCross这让我难以忍受多年,直到我意识到我在私人模式下浏览.说实话,当我已经拥有一个使用原生FB应用程序的会话时,我不希望在Safari中存储会话.感觉很脏.我还想经常清除Safari cookie和会话以确保安全.让这种体验变得更糟的是,黄色的大消息告诉我,当我被发送到Safari中的网络表单时,我应该使用本机应用程序.经历太糟糕了.我想你已经做了一个不必要的电话. (8认同)
  • 我觉得这个决定很有意思. (6认同)
  • @SimonCross这不会大大增加用户登录渠道的下降(特别是惩罚仅使用Facebook登录的应用程序吗?)我最担心的是用户将不记得他们的Facebook凭据登录Safari View Controller并且只是反弹.使用快速应用程序切换消除了记住电子邮件/密码信息的需要.您的测试/研究显示了不同的结果吗? (6认同)
  • 不使用快速应用切换的缺点是你在每次登录时都受到Facebook双因素身份验证的挑战:( (2认同)

sal*_*t5r 15

从现在开始您可以将loginBehavior更改为FBSDKLoginBehaviorSystemAccount,以便FBSDKLoginManager从iOS Facebook设置获取Facebook登录用户;)

FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
fbLogin.loginBehavior = FBSDKLoginBehaviorSystemAccount;
Run Code Online (Sandbox Code Playgroud)

来自FBSDKLoginManager:

声明:FBSDKLoginBehaviorSystemAccount
描述:如果该应用程序无法使用该帐户(未由用户配置或由SDK确定),则此行为将回退到FBSDKLoginBehaviorNative.
注意:如果该应用程序无法使用该帐户(未由用户配置或由SDK确定),则此行为将回退到FBSDKLoginBehaviorNative.

  • 这是最好的答案!它只是工作.据我所知,如果没有连接到手机的Facebook帐户,它将回退到LoginBehaviorNative.如果没有安装应用程序,LoginBehaviorNative会回退到弹出窗口浏览器. (2认同)
  • 当然,如果每个应用程序都提示人们登录Safari View Controller,那么他们将登录Safari本身不是吗?这意味着Facebook可以更轻松地跟踪用户的网页浏览.我想大多数安装了Facebook iOS应用程序的人都没有理由在Safari中登录.或许有点愤世嫉俗,但我不明白为什么Safari View Controller会被认为更好. (2认同)

小智 9

使用20150708在iOS 9中为我解决了它.

链接到SDK:https://developers.facebook.com/resources/FacebookSDKs-iOS-20150708.pkg