web-dev-qa-db-ja.com

FacebookログインでiOS 11に追加の確認ポップアップが表示される

Facebook SDK for Swiftを使用してfacebook経由でログインを実装しました。 iOS 10.3では期待どおりに動作しますが、iOS 11では、facebook.comからのサインインを許可するようユーザーに要求する追加のポップアップが表示されます。

security confirmation

これにより、ログインプロセスにもう1つのステップが追加され、ログインプロセスの速度が低下します。これをデフォルトで許可するようにアプリを構成して、迷惑なポップアップを削除する方法はありますか?

ココアポッドから追加されたfacebook-sdk-Swift 0.2.0(FBSDKバージョンは4.26.0)を使用しています。

info.plistの構成:

<key>FacebookAppID</key>
<string>xxxxxxxxxxxxxxx</string>
<key>FacebookDisplayName</key>
<string>XXXXX</string>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>akamaihd.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>facebook.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>fbcdn.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
    </dict>
</dict>
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>facebook</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fbxxxxxxxxxxxxxxx</string>
        </array>
    </dict>
</array>

AppDelegateのコード:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    return SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    return SDKApplicationDelegate.shared.application(app, open: url, options: options)
}

LoginControllerには、これがハンドラー内にあるカスタムログインボタンがあります。

    let loginManager = LoginManager()
    loginManager.loginBehavior = .native
    loginManager.logIn([ .publicProfile, .userFriends, .email, .custom("user_location"), .custom("user_education_history"), .custom("user_work_history") ], viewController: self) { loginResult in
    }

私は GitHub で共有するアプリをゼロから作成してテストしました。それでも同じです。

11
Milan Nosáľ

わかりました、それでいくつかの役に立たない実験の後、私は私のクライアントが望んだものを達成する方法を見つけることができました。前述の動作は、FBSDKの新しいバージョンの結果です。 FBSDK 4.26.0から4.24.0(Swift SDKのバージョンは問題ではない)にダウングレードすると、ポップアップが表示されなくなりました。したがって、同じ問題に直面していて、クライアント(またはあなた)がこのポップアップを望まない場合、これもあなたのための解決策になるかもしれません。

Facebookの人たちが誤ってこれを行ったとは思わない。このポップアップはiOS 11の新機能をいくつか許可する。しかし、私は実際の新機能を区別できませんでした。新しいバージョンでは、ネイティブアプリまたはSafariを使用してログインするかどうかを選択できず、Safariログインに直接進むことに気付きました。しかし、それも私のクライアントの要件だったので、私にとっては選択はかなり自然なことでした。

このメッセージは、SFAuthenticationSessionがサファリへのアクセス許可をユーザーに求めるために使用する標準メッセージです( docs からの抜粋):

アプリケーションがSFAuthenticationSessionを使用している場合、ユーザーはダイアログボックスで明示的な同意を求められ、アプリケーションがSafariのWebサイトのデータにアクセスできるようにします。

UPDATE:

どうやら、Safariはこのダイアログの表示名として「CFBundleName」プロパティを使用しています。これは通常、アプリのバンドルIDの最後の部分と等しい$ {PRODUCT_NAME}に設定されますが、好きなように変更できます。もちろん、アプリの実際の表示名に設定することをお勧めします。

21
Milan Nosáľ

FacebookLogin 0.5.0を使用しています

ターゲットのビルド設定の下にある_Product Name_を目的のテキストに変更すると機能しました。

また、私のplistでは_Bundle display name_と_Bundle name_に$(PRODUCT_NAME)があります

0
Tharak

これはiOS 11.x更新に関連していますFacebook SDK 0.3.SFAuthenticationSessionを使用しているため、アラートにより明示的な同意が与えられ、 SafariでWebサイトのデータにアクセスするためのアプリケーション。

これを試してみましたiOS 10.x、アラートなし!

ポップアップを削除したい場合は、Facebook SDKを.2.にダウングレードする必要があります。Facebook Swift SDKObjective C SDKにも依存しますこれらのバージョンも強制的にバージョンにダウングレードする必要があります4.22.1

ダウングレード前:

pod 'FacebookCore', '~> 0.3.0'
pod 'FacebookLogin', '~> 0.3.0'
pod 'FacebookShare', '~> 0.3.0'

ダウングレード後:

pod 'FacebookCore', '~> 0.2.0'
pod 'FacebookLogin', '~> 0.2.0'
pod 'FacebookShare', '~> 0.2.0'
pod 'FBSDKCoreKit', '~> 4.22.1'
pod 'FBSDKLoginKit', '~> 4.22.1'
pod 'FBSDKShareKit', '~> 4.22.1'
0
raed