Firebase Auth将匿名身份验证用户与自定义身份验证用户相关联

dom*_*ren 5 authentication credentials firebase

我在这里看到:https://firebase.google.com/docs/auth/web/account-linking#link-auth-provider-credentials-to-a-user-account现在可以链接用户帐户了火力地堡.我还看到Firebase提供了匿名身份验证的功能,它为用户创建了一个用户会话,没有任何凭据.

在我们的应用程序中,我们通常使用CustomAuthentication和Firebase,因为我们有自己的身份验证服务.这非常有效,我们可以在使用Firebase的系统之间使用相同的Auth系统,而不使用Firebase.

现在我们已经到了想要利用Firebase的匿名身份验证的地步,允许用户在没有注册的情况下使用应用程序,只需在登录后传输他们的详细信息.所以我认为帐户链接是我需要的.但我找不到将匿名帐户与自定义身份验证帐户相关联的方法.Firebase可以实现这样吗?

小智 7

我还没有找到匿名和自定义signIns之间的链接,所以我只使用signInAnonymously并将它的uid传递给signInWithCustomToken.

步骤1.为了能够实现这一点,你应该从signInAnonymously函数中获取一个uid,如下所示:

var uid;
auth().signInAnonymously().then(user => {
  uid = user.uid;
});
Run Code Online (Sandbox Code Playgroud)

步骤2.保存当前用户数据,如下所示:

database().ref(`users/${uid}`).set({ some: 'data' });
Run Code Online (Sandbox Code Playgroud)

步骤3.将此uid发送到返回自定义令牌的服务器.在您的服务器上,您只需将此uid传递给firebase.auth().createCustomToken(uid)函数并将此自定义令牌发回.它将包含uid.

步骤4.当您收到自定义令牌时,您可以使用以下方式登录:

auth().signInWithCustomToken(authKey);
Run Code Online (Sandbox Code Playgroud)

就是这样.您已使用自定义令牌登录,并可以访问在步骤2中保存的匿名用户数据.


drh*_*yes 0

警告:我从来没有这样做过。您看过这个页面吗?在底部的“电子邮件密码登录”标题下,列出了以下代码片段:

var credential = firebase.auth.EmailPasswordAuthProvider.credential(email, password);
Run Code Online (Sandbox Code Playgroud)

然后(显然)您可以像这样链接凭证:

auth.currentUser.link(credential).then(function(user) {
  console.log("Anonymous account successfully upgraded", user);
}, function(error) {
  console.log("Error upgrading anonymous account", error);
});
Run Code Online (Sandbox Code Playgroud)