web-dev-qa-db-ja.com

Facebookログイン-iOS 9-Safariなし

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(@"");
}];
32
user4200570

20150708を使用すると、iOS 9で解決しました。

SDKへのリンク: https://developers.facebook.com/resources/FacebookSDKs-iOS-20150708.pkg

9
user4200570

IOS9以降では、最新のFB SDKを使用して以前の動作を取得する方法はないようです。古いSDKを使用してそれを行うことができます。以下は、その質問に対するFacebookからの回答です。 enter image description here

39
Lucas Brito

今からloginBehaviorをFBSDKLoginBehaviorSystemAccountに変更できるため、FBSDKLoginManagerはiOSのFacebook設定からFacebookにログインしたユーザーを取得します;)

FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
fbLogin.loginBehavior = FBSDKLoginBehaviorSystemAccount;

FBSDKLoginManagerから:

宣言:FBSDKLoginBehaviorSystemAccount
説明:アカウントがアプリで使用できない場合(ユーザーによって設定されていないか、SDKによって決定されている場合)、この動作はFBSDKLoginBehaviorNativeにフォールバックします。
:アカウントがアプリで使用できない場合(ユーザーによって設定されていないか、SDKによって決定されている場合)、この動作はFBSDKLoginBehaviorNativeにフォールバックします。

15
saltwat5r

IOS 9で最新のSDKとネイティブログイン動作を使用する場合

編集FBSDKServerConfiguration.mの関数は常にtrueを返します

- (BOOL)useNativeDialogForDialogName:(NSString *)dialogName
{
  return @YES;
}

Facebookアプリがインストールされていない場合でもSafariへのフォールバックは引き続き機能します

2
vk.edward.li

ここでドキュメントに従いました: https://developers.facebook.com/docs/ios/ios9

ポイント2と3を追加すると、アプリがログイン用にネイティブのFacebookアプリに切り替わります...

1
dondonhk

私は両方の変更ログにも気づきました:

iOS変更ログv4.x用Facebook SDK

(v4.6.0-2015年9月10日)さらに、ログイン、いいね!、共有ダイアログなどのSDKダイアログは、Safariの代わりにSFSafariViewControllerを含むデバイスに基づいて最適なUIを自動的に決定します。 iOS 9の準備ガイドに従ってください。

iOS変更ログv3.x用Facebook SDK

(v3.24.0-2015年9月10日)さらに、ログイン、いいね、共有ダイアログなどのSDKダイアログは、Safariの代わりにSFSafariViewControllerを含むデバイスに基づいて最適なUIを自動的に決定します。 iOS 9の準備ガイドに従ってください。

1
Justin Whitney

モーダルを開いてSafariまたはFacebookアプリとは別にfacebookの資格情報を要求する場合は、最新のfacebook sdkを使用してログイン動作を設定するだけです

FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
[login setLoginBehavior:FBSDKLoginBehaviorWeb];

これにより、ログアウトプロセスがより便利になり、ユーザーの混乱が少なくなります。

1
smoothumut

In Swift選択したログイン動作がWebの場合、webView popUpを開きます。safariブラウザへのログインリダイレクトはありません。

// Try to login with permissions
    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()

    fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
0
Krishna Gawade

次のようにデフォルトのログイン動作を変更したい

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がポップアップ表示されます。

0
user1709076

CocoaPodsでこのバージョンを使用する:

pod 'FBSDKCoreKit', '4.4.0'
pod 'FBSDKLoginKit', '4.4.0'
pod 'FBSDKShareKit', '4.4.0'
0
Tai Le