Facebooklogin – iOS 9 – 没有Safari
在iOS 8中使用logInWithReadPermissionslogin工作正常,但是在更新到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(@""); }];
似乎没有办法在iOS9 +中使用最新的FB SDK获得以前的行为。 你可以使用旧的SDK来做到这一点。 这是来自Facebook的回应:
从现在开始,您可以将loginBehavior更改为FBSDKLoginBehaviorSystemAccount,以便FBSDKLoginManager从Facebook Facebook设置中获取Facebooklogin用户;)
FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init]; fbLogin.loginBehavior = FBSDKLoginBehaviorSystemAccount;
从FBSDKLoginManager:
声明 :FBSDKLoginBehaviorSystemAccount
说明 :如果该帐户对应用程序不可用(不是由用户configuration或由SDK确定),则此行为将回退到FBSDKLoginBehaviorNative。
注意 :如果该帐户对应用程序不可用(或者未由用户configuration或由SDK确定),则此行为将回退到FBSDKLoginBehaviorNative。
使用20150708在iOS 9中为我解决了它。
链接到SDK: https : //developers.facebook.com/resources/FacebookSDKs-iOS-20150708.pkg
如果您想要使用最新的SDK,以及iOS 9上的本机login行为
编辑FBSDKServerConfiguration.m
的函数总是返回true
- (BOOL)useNativeDialogForDialogName:(NSString *)dialogName { return @YES; }
如果未安装Facebook应用程序,则回到Safari仍然可以正常工作
我注意到在这两个更新日志,以及:
Facebook SDK for iOS更新日志v4.x
(v4.6.0 – 2015年9月10日)此外,诸如Login,Like,Share对话框之类的SDK对话框会自动确定基于设备的最佳UI,包括SFSafariViewController而不是Safari。 按照我们的准备iOS 9指南。
适用于iOS的Facebook SDK Changelog v3.x
(v3.24.0 – 2015年9月10日)此外,诸如Login,Like,Share对话框之类的SDK对话框会自动确定基于设备的最佳UI,包括SFSafariViewController而不是Safari。 按照我们的准备iOS 9指南。
我在这里跟随文档: https : //developers.facebook.com/docs/ios/ios9
添加点2和3后,我的应用程序切换到本地Facebook应用程序login…
如果你想要一个模式打开,并从Safari或Facebook应用程序单独要求Facebook的凭据,只需使用最新的Facebook SDK,并设置login行为
FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init]; [login setLoginBehavior:FBSDKLoginBehaviorWeb];
这将使注销过程更方便,并且减less用户的混淆。
与CocoaPods一起使用这个版本:
pod 'FBSDKCoreKit', '4.4.0' pod 'FBSDKLoginKit', '4.4.0' pod 'FBSDKShareKit', '4.4.0'
在swift中当你select的login行为是Web时,然后打开webView popUp。 没有loginredirect到Safari浏览器
// Try to login with permissions let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
您想要更改默认的login行为,如下所示
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; [login logOut];
login.loginBehavior = FBSDKLoginBehaviorSystemAccount;
[login logInWithReadPermissions:@[@"public_profile", @"email", @"gender",@"user_friends"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { // Process error } else if (result.isCancelled) { // Handle cancellations } else { // Now that we are authorized to view public profile and email, request that data get data from 'me' [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields" : @"first_name, last_name,email,name,gender,birthday"}] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { }]; } }];
如果用户在“ 设置”应用下没有填写自己的Facebook用户名和密码,则Safari会popup。
解! iOS 9.2.1 Facebook SDK 4.10.0
-
通过Cocoapods安装Facebook SDK
-
组:
FBSDKLoginManager * loginManager = [[FBSDKLoginManager alloc] init]; loginManager.loginBehavior = FBSDKLoginBehaviorNative;
-
在〜/ FBSDKCoreKit / FBSDKServerConfigurationManager.m中
更改:
NSOperatingSystemVersion iOS9Version = { .majorVersion = 9, .minorVersion = 0, .patchVersion = 0 }; BOOL useNativeFlow = ![FBSDKInternalUtility isOSRunTimeVersionAtLeast:iOS9Version];
至:
BOOL useNativeFlow = YES;
- 在〜/ FBSDKLoginKit / FBSDKLoginManager.m中
更改:
BOOL useNativeDialog = [serverConfiguration useNativeDialogForDialogName:FBSDKDialogConfigurationNameLogin];
至:
BOOL useNativeDialog = YES;
-
在豆荚中查找:
BOOL useNativeDialog
如果您想使用其他function,请进行相同的更改。 例如:应用程序邀请。
现在,应用使用原生Facebook应用login。
这个解决scheme适用于我。 希望能帮助到你。
PS不要忘记升级FB SDK后进行更改。
- 在LSApplicationQueriesSchemes下的Info.plist中缺lessfbauth2,并且是iOS 9.0所必需的
- iOS – Facebook – 您必须升级这个应用程序到Graph API v2.x
- 是否有可能深入链接到iOS上的Facebook移动应用程序中的特定页面或位置?
- iOS的Facebook的SDK如何下载相册,个人资料的照片数据
- 无法通过iPhone SDK中的获取访问令牌
- 创buildiOS模拟器Cocoapod项目的构build
- 如何编写UItesting覆盖在Xcode的Facebooklogin?
- 如何在ios中获取Facebook用户信息
- 如何从iOS SDK中的Facebook对象获取Facebook用户ID?