我正在尝试将Facebook登录到我的应用中,并且我一直在密切关注文档。
Info.plist
文件AppDelegate
在viewDidLoad
方法中,我有以下代码:
let loginButton = LoginButton(readPermissions: [ .publicProfile ])
loginButton.center = view.center
loginButton.delegate = self
view.addSubview(loginButton)
viewController符合委托:
extension FacebookLoginViewController: LoginButtonDelegate {
func loginButtonDidCompleteLogin(_ loginButton: LoginButton, result: LoginResult) {
switch result {
case .cancelled:
print("User cancelled login")
case .failed(let error):
print("Failed: \(error)")
case .success:
print("Successful login")
}
}
func loginButtonDidLogOut(_ loginButton: LoginButton) { print("Logged out") }
}
当我单击登录按钮时,会出现一个应用程序内浏览器窗口,询问我是否要使用Facebook应用程序或浏览器登录。 screenshot of selection view
如果我选择浏览器,则需要输入我的用户名和密码,并且该浏览器有效。
如果我选择该应用,然后执行身份验证过程,然后返回到我的应用,就好像什么都没发生。选择Facebook应用程序或浏览器的提示仍然存在。该请求没有失败或成功,也没有任何结果。它甚至没有调用委托方法。
要通过应用程序进行身份验证,还需要做其他事情吗?
答案 0 :(得分:0)
解决方案很简单。 直接来自Facebook iOS团队:您要做的就是在AppDelegate文件中添加此功能。
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)
}