firebase react native : convert anonymous user to a permanent user via phone auth

标签 firebase react-native firebase-authentication react-native-firebase

我的 react-native 应用程序允许用户使用 firebase 匿名登录。之后我希望允许用户通过 firebase phone auth 创建一个帐户并将这个匿名帐户转换为永久帐户。

根据 firebase 提供的 api 和文档,我认为这是可能的

匿名帐户创建: https://rnfirebase.io/docs/v5.x.x/auth/reference/auth#signInAnonymously

电话授权创建和检索凭证: https://rnfirebase.io/docs/v5.x.x/auth/reference/PhoneAuthProvider#credential

将现有用户与新凭据相关联: https://rnfirebase.io/docs/v5.x.x/auth/reference/User#linkWithCredential

https://firebase.google.com/docs/auth/web/account-linking

这是我做的

匿名账户创建:

const {user: {uid: userID}} = await firebase.auth().signInAnonymously();

// successfully created and save this user's id

让用户进行身份验证并获取手机身份验证凭证:

const credential = firebase.auth.PhoneAuthProvider.credential(verificationId, code);

在这一点上,我将拥有一个有效的凭证和一个准备好链接的现有匿名用户

然后我将手机身份验证凭据提供给我的匿名用户进行链接

const authUser = await firebaseAuth.currentUser.linkWithCredential(credential);

我希望根据我的输入成功链接,但我收到了错误,我收到的错误是

Error: This credential is already associated with a different user account.

错误代码是:ERROR_CREDENTIAL_ALREADY_IN_USE

ERROR_CREDENTIAL_ALREADY_IN_USE 下的文档中,他们确实提到了:

如果您通过链接 Google 凭据将匿名用户升级为 Google 用户,并且所使用的 Google 凭据已经与现有的 Firebase Google 用户相关联,则可能会抛出此错误。字段 error.email、error.phoneNumber , 和 error.credential (AuthCredential) 可能会被提供,这取决于凭证的类型。您可以通过 auth#signInWithCredential 直接使用 error.credential 登录来从此错误中恢复。

但是我一直没能在错误对象下找到error.credential来从错误中回来。

我见过许多将匿名用户与其他身份验证提供程序链接起来的工作示例,但从未见过将 firebase 匿名用户与 firebase 电话身份验证凭据链接起来的例子。有谁知道是否支持这种类型的链接?谁能指出我在这里做错了什么?

最佳答案

跟进:

所以我实际上发现我的代码确实有效,这就是您实现 firebase 匿名用户 -> firebase 电话身份验证帐户链接的方式。

这对我不起作用的原因是......对于我们的应用程序,每次用户输入确认代码时,我们都有一个微服务在后端创建帐户。事后看来,我真的应该仔细检查我们自己的代码库,吸取教训。

关于firebase react native : convert anonymous user to a permanent user via phone auth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56726661/

相关文章:

android - 在 firebase.auth().signOut() 之后,当我尝试在不注册的情况下再次登录时,它不起作用

react-native - 如何使可拖动记住它在 React Native 中的位置

android - ReactJS 中的隐形 View

javascript - VueJS - 变量已定义但从未使用过(将数据发送到 Firebase)

swift - 错误是类型 'AuthDataResult' 的值没有成员 'uid'?

javascript - Android React Native 应用程序在 getUserMedia WebRTC 调用时崩溃

javascript - Vuex 和 VueJS(不要在变异处理程序之外改变 vuex 存储状态)

python - 用户电子邮件(正确)在修改后的 firenotes 中显示为在前端验证但后端未验证

javascript - Firebase:暂停/恢复文件上传

android - 如何在 firebase 消息服务中添加 View ?