Facebook登录在iOS 11上显示另一个确认弹出窗口

Mil*_*sáľ 10 facebook ios facebook-login swift ios11

我已经使用Facebook SDK for swift通过facebook实现了登录.它在iOS 10.3上按预期工作,但在iOS 11上显示并显示其他弹出窗口,要求用户允许通过facebook.com登录.

安全确认

这会在登录过程中再添加一个步骤,从而减慢登录过程.有没有办法如何配置应用程序默认允许这样,从而删除恼人的弹出窗口?

我正在使用通过可可豆荚添加的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>
Run Code Online (Sandbox Code Playgroud)

代码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)
}
Run Code Online (Sandbox Code Playgroud)

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
    }
Run Code Online (Sandbox Code Playgroud)

我从头创建了一个应用程序来测试它,在GitHub上共享.仍然是这样.

Mil*_*sáľ 21

好的,经过几次无用的实验后,我找到了一种方法来实现我的客户想要的.上述行为是较新版本的FBSDK的结果.一旦我从FBSDK 4.26.0降级到4.24.0(Swift SDK版本没关系),弹出窗口就停止了显示.因此,如果您遇到同样的问题,并且您的客户(或您)不想要此弹出窗口,这也可能是您的解决方案.

我不认为facebook家伙会偶然做到这一点,这个弹出窗口可以允许一些新的iOS 11功能.但是,我无法区分任何真正的新功能 - 我只注意到如果您想使用本机应用程序或Safari进行登录,新版本不会为您提供选择,而是直接进行Safari登录.但由于这也是我的客户的要求,对我来说,选择是很自然的.

该消息是用于SFAuthenticationSession询问用户访问safari的权限的标准消息(摘自docs):

如果应用程序使用SFAuthenticationSession,则会通过对话框提示用户明确同意,允许应用程序访问Safari中的网站数据.

  • @vignesh不准确,我的产品名称与那里出现的不同,它仍然显示了包ID (3认同)