将 FirebaseUI 与 Twitter 登录一起使用(iOS 应用)
Posted
技术标签:
【中文标题】将 FirebaseUI 与 Twitter 登录一起使用(iOS 应用)【英文标题】:Using FirebaseUI with Twitter Login (iOS App) 【发布时间】:2021-08-09 19:55:39 【问题描述】:在我的 ios 应用程序中,我使用 FirebaseUI 进行所有登录身份验证。我刚刚安装了 Twitter 身份验证提供程序,它可以正常登录,但我无法找到 Twitter 用户名或从当前用户对象获取电子邮件地址。有趣的是,Twitter 用户名确实出现在 Firebase 控制台 > 身份验证列下的表格中。这是一个由两部分组成的问题,专门针对 FirebaseUI 登录方法。
-
我可以在 Auth.auth().currentUser 的什么位置获取 twitter 用户名?如果不存在,如何检索。
如何获取 Twitter 电子邮件地址?这不会填充到 Auth.auth().currentUser 对象中。
这是 twitter 登录功能的设置代码。
authUI!.delegate = self
let emailProvider = FUIEmailAuth(...)
let twitterProvider = FUIOAuth.twitterAuthProvider()
authUI!.providers = [emailProvider, twitterProvider]
let authVC = authUI!.authViewController()
present(authVC, animated: true, completion: nil)
这是 didSignInWith 生成的代码。
func authUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?)
if let auth = Auth.auth().currentUser
// do something now that user is logged in...
上面的 auth 变量由 twitter 用户填充,我确实看到了 auth.displayName 值。 auth.email 为空。
【问题讨论】:
【参考方案1】:我终于明白了。直到深入研究文档,我才意识到响应中有一个附加信息。所以代码看起来像......
func authUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?)
guard error == nil else return
if let auth = authDataResult?.user
if authDataResult?.additionalUserInfo?.isNewUser
let username = authDataResult!.additionalUserInfo?.username ?? ""
let screenName = authDataResult!.additionalUserInfo?.profile?[screen_name] as? String ?? ""
对于 Twitter,用户名为空,但 screenName 包含用户的 Twitter 名称。
【讨论】:
以上是关于将 FirebaseUI 与 Twitter 登录一起使用(iOS 应用)的主要内容,如果未能解决你的问题,请参考以下文章
将 FirebaseUI 与 AngularFire2 一起使用
Firebase Auth 与 firebaseui-web 在身份验证后不会重定向
Apple 在 iOS (Swift) 上使用 FirebaseUI 登录不起作用
Facebook 的 FirebaseUI 身份验证不起作用