我在与Firebase匿名登录一起尝试登录/授权Facebook时遇到了一些问题。
我目前有一个常规UIButton
尝试使用以下代码登录用户。
let loginManager = FBSDKLoginManager()
loginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self, handler: { (result: FBSDKLoginManagerLoginResult!, error) -> Void in
// get fbsdk token and login through firebase
})
通常,单击该按钮将显示alertController
显示的正常行为,并询问用户是否要使用facebook.com登录。点击“继续”后,Safari(或Facebook)将打开授权该应用。
这一切都很好,但是如果用户首先匿名从Firebase登录,点击同一个按钮登录facebook将会失败。在alertController弹出询问用户之后,看起来好像屏幕(Safari)在演示期间中途中止而只是停留在当前屏幕上。如果再次单击该按钮,应用程序将最终崩溃而不显示任何错误消息
(它只会在AppDelegate上显示EXC_BAD_ACCESS消息)。
举个例子,我已经把下面的代码展示了如何保证facebook登录失败。
Auth.auth().signInAnonymously { (user, error) in
if let error = error {
print(error.localizedDescription)
}
if let user = user {
let loginManager = FBSDKLoginManager()
loginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self, handler: { (result: FBSDKLoginManagerLoginResult!, error) -> Void in
// get fbsdk token and login through firebase
})
}
}
显然,在我的实际代码中,我不是在我匿名登录后立即登录,但它表明匿名签名明显影响了FBSDKLoginManager
。我已经看过了,但我们还没有真正看到任何有关此事的问题。想知道这是一个错误还是我错过了什么。
这是在iOS / Swift FYI上。 谢谢!
答案 0 :(得分:0)
让loginManager = FBSDKLoginManager()loginManager.logIn(withReadPermissions:[“ public_profile”,“ email”,“ user_friends”],来自:self,handler:{(结果:FBSDKLoginManagerLoginResult !,错误)->在//中无效获取fbsdk令牌并通过firebase登录})Auth.auth()。signInAnonymously {(用户,错误),如果let错误=错误{print(error.localizedDescription)}如果让用户=用户{let loginManager = FBSDKLoginManager()loginManager。 logIn(withReadPermissions:[“ public_profile”,“ email”,“ user_friends”],来自:自我,处理程序:{(结果:FBSDKLoginManagerLoginResult !,错误)->无效//获取fbsdk令牌并通过firebase登录})}}