1

我在尝试登录/授权 facebook 以及 Firebase 匿名登录时遇到了一些问题。

我目前有一个常规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 展示 facebook 授权,它看起来好像屏幕 (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 仅供参考。谢谢!

4

1 回答 1

0

let loginManager = FBSDKLoginManager() loginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self, handler: { (result: FBSDKLoginManagerLoginResult!, error) -> Void in // 获取 fbsdk 令牌并通过firebase }) 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 // 获取 fbsdk 令牌并通过 firebase 登录 }) } }

于 2018-06-21T17:51:58.600 回答