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(@"");
}];
20150708を使用すると、iOS 9で解決しました。
SDKへのリンク: https://developers.facebook.com/resources/FacebookSDKs-iOS-20150708.pkg
今からloginBehaviorをFBSDKLoginBehaviorSystemAccountに変更できるため、FBSDKLoginManagerはiOSのFacebook設定からFacebookにログインしたユーザーを取得します;)
FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
fbLogin.loginBehavior = FBSDKLoginBehaviorSystemAccount;
FBSDKLoginManagerから:
宣言:FBSDKLoginBehaviorSystemAccount
説明:アカウントがアプリで使用できない場合(ユーザーによって設定されていないか、SDKによって決定されている場合)、この動作はFBSDKLoginBehaviorNativeにフォールバックします。
注:アカウントがアプリで使用できない場合(ユーザーによって設定されていないか、SDKによって決定されている場合)、この動作はFBSDKLoginBehaviorNativeにフォールバックします。
IOS 9で最新のSDKとネイティブログイン動作を使用する場合
編集FBSDKServerConfiguration.m
の関数は常にtrueを返します
- (BOOL)useNativeDialogForDialogName:(NSString *)dialogName
{
return @YES;
}
Facebookアプリがインストールされていない場合でもSafariへのフォールバックは引き続き機能します
ここでドキュメントに従いました: https://developers.facebook.com/docs/ios/ios9
ポイント2と3を追加すると、アプリがログイン用にネイティブのFacebookアプリに切り替わります...
私は両方の変更ログにも気づきました:
(v4.6.0-2015年9月10日)さらに、ログイン、いいね!、共有ダイアログなどのSDKダイアログは、Safariの代わりにSFSafariViewControllerを含むデバイスに基づいて最適なUIを自動的に決定します。 iOS 9の準備ガイドに従ってください。
(v3.24.0-2015年9月10日)さらに、ログイン、いいね、共有ダイアログなどのSDKダイアログは、Safariの代わりにSFSafariViewControllerを含むデバイスに基づいて最適なUIを自動的に決定します。 iOS 9の準備ガイドに従ってください。
モーダルを開いてSafariまたはFacebookアプリとは別にfacebookの資格情報を要求する場合は、最新のfacebook sdkを使用してログイン動作を設定するだけです
FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
[login setLoginBehavior:FBSDKLoginBehaviorWeb];
これにより、ログアウトプロセスがより便利になり、ユーザーの混乱が少なくなります。
In Swift選択したログイン動作がWebの場合、webView popUpを開きます。safariブラウザへのログインリダイレクトはありません。
// Try to login with permissions
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
次のようにデフォルトのログイン動作を変更したい
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)
{
}];
}
}];
ユーザーがSettingsアプリでFacebookのユーザー名とパスワードを入力していない場合、safariがポップアップ表示されます。
CocoaPodsでこのバージョンを使用する:
pod 'FBSDKCoreKit', '4.4.0'
pod 'FBSDKLoginKit', '4.4.0'
pod 'FBSDKShareKit', '4.4.0'