【问题标题】:How to use linkWithCredential with verifyPhoneNumber?如何将 linkWithCredential 与 verifyPhoneNumber 一起使用?
【发布时间】:2019-07-24 16:46:15
【问题描述】:
  1. 我使用电子邮件和密码创建了一个 Firebase 身份验证用户
  2. 用户登录
  3. 用户决定将电话号码添加到他们的个人资料中
  4. 我致电verifyPhoneNumber 是为了接收代码,然后致电PhoneAuthProvider.getCredential(...) 并将生成的AuthCredential 链接到电子邮件和密码。
  5. 相反,Android 会自动检索代码,用户使用电话号码自动登录,他们的 UID 更改(它是新用户)并且无法将电话凭据链接回原始电子邮件/密码用户。要执行成功的链接,我需要查看 SMS 代码,如果自动登录成功,则找不到该代码。
  6. ????
  7. 没有利润。

有什么想法吗?我尝试将verifyPhoneNumber 的超时设置为 0,但自动登录仍然有效。接受失败并将 EmailAndPassword 凭据链接到电话号码而不是反之亦然不是一种选择,因为它需要将旧用户记录中的大量数据复制到新记录中,在任何地方更改对该 UID 的所有引用,等等。

【问题讨论】:

    标签: android firebase flutter firebase-authentication


    【解决方案1】:

    verifyPhoneNumber 解析为 PhoneAuthCredential

    无论代码是自动检索还是即时验证发生都无关紧要。 PhoneAuthCredentialverifyPhoneNumber 完成时输出。

    该凭据可用于signInWithCredential 登录或通过linkWithCredential 链接到现有用户。

    【讨论】:

    • 很好,verifyPhoneNumber 已经给了我AuthCredential,无需致电getCredential(),但主要问题仍未得到解答:如何防止自动登录并因此更改currentUser .
    • 自动登录是什么意思?您是指即时电话身份验证验证吗?
    • 是的,即时验证会立即登录(新)用户。
    • 这是不正确的。即时验证将触发带有PhoneAuthCredentialonVerificationCompleted 回调,如下所述:firebase.google.com/docs/auth/android/…
    • 好吧,我也认为这是不正确的行为,但这就是它的作用,并且它在官方文档中有记录:Either sends an SMS with a 6 digit code to the phone number specified, or sign's the user in and verificationCompleted is called.pub.dartlang.org/documentation/firebase_auth/latest/…
    猜你喜欢
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 2023-03-13
    • 2014-09-25
    • 2016-01-30
    • 2015-12-13
    • 2020-09-15
    • 2020-06-03
    相关资源
    最近更新 更多