如何解决将 FirebaseUI 与 Twitter 登录结合使用iOS 应用
在我的 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 为空。
解决方法
我终于明白了。直到深入文档后,我才意识到响应中有一个附加信息。所以代码看起来像......
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 名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。