使用Firebase匿名登录影响Facebook登录

时间:2018-05-09 00:03:25

标签: ios swift firebase firebase-authentication fbsdkloginkit

我在与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上。 谢谢!

1 个答案:

答案 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登录})}}