Facebooklogin在iOS 11上显示一个额外的确认popup窗口

我已经实现了login通过Facebook使用Facebook的SDK的SWIFT。 它在iOS 10.3上按预期工作,但是在iOS 11上它显示并要求用户允许通过facebook.comlogin。

安全确认

这在login过程中增加了一步,减慢了login过程。 有没有办法如何configuration应用程序来允许这个默认情况下,从而删除恼人的popup?

我正在使用facebook-sdk-swift 0.2.0(FBSDK版本是4.26.0)通过cocoa pod添加。

info.plistconfiguration:

 <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有一个自定义的loginbutton,在这个处理程序中:

  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 } 

我从头创build了一个应用程序来testing它,在GitHub上共享。 仍然是一样的。

好吧,经过几次无用的实验,我已经能够find一种方法来实现我的客户想要的。 前面提到的行为是FBSDK更新版本的结果。 一旦我从FBSDK 4.26.0降级到4.24.0(Swift SDK版本无关紧要),popup窗口停止显示。 所以,如果你面对同样的问题,而你的客户(或你)不想要这个popup窗口,这可能也是你的一个解决scheme。

我不认为Facebook的人这样做是偶然的,这个popup可以允许一些新的iOS 11function。 然而,我无法区分任何真正的新function – 我只注意到,如果您想使用原生应用程序或Safari浏览器login,而更新的版本不会给您一个select,而是直接进入Safari浏览器login。 但既然这是我的客户的要求,对我来说,select是非常自然的。