首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >firebase react-native:通过电话身份验证将匿名用户转换为永久用户

firebase react-native:通过电话身份验证将匿名用户转换为永久用户
EN

Stack Overflow用户
提问于 2019-06-24 02:18:20
回答 1查看 492关注 0票数 2

我的react原生应用程序允许用户使用firebase匿名登录。在那之后,我希望让用户通过firebase电话身份验证创建一个帐户,并将这个匿名帐户转换为一个永久帐户。

基于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

下面是我所做的

匿名帐户创建:

代码语言:javascript
复制
const {user: {uid: userID}} = await firebase.auth().signInAnonymously();

// successfully created and save this user's id

让用户进行身份验证并获取电话身份验证凭据:

代码语言:javascript
复制
const credential = firebase.auth.PhoneAuthProvider.credential(verificationId, code);

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

然后,我将电话身份验证凭据提供给我的匿名用户以进行链接

代码语言:javascript
复制
const authUser = await firebaseAuth.currentUser.linkWithCredential(credential);

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

代码语言:javascript
复制
Error: This credential is already associated with a different user account.

错误码为:ERROR_CREDENTIAL_ALREADY_IN_USE

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

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

但是我还没能在error对象下找到要从错误中返回的error.credential。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-27 02:44:44

跟进:

因此,我发现我的代码确实可以工作,这就是实现firebase匿名用户-> firebase电话身份验证帐户链接的方式。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56726661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档