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.plist
configuration:
<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是非常自然的。
- 更新Xcode 7后,Facebook的SDK不是一个Dylib错误?
- 将FacebookSDK.framework添加到我自己的静态库中
- Facebook SDK共享链接内容被来自内容url的元数据所取代
- 链接到Facebook上的应用程序“对不起,此页面不可用”
- 使用新的“Facebook SDK for iOS”与旧的“Facebook iPhone SDK”进行Facebook身份validation
- SDK更新至3.14后,原生Facebooklogin停止工作
- 找不到“FBLoginViewDelegate”的协议声明
- 您已经授权Facebook,iOS
- 如何通过点击Swift中的button来打开fb和instagram应用程序