【问题标题】:Firebase Auth : Linking Anonymous AccountFirebase 身份验证:链接匿名帐户
【发布时间】:2019-01-17 03:55:49
【问题描述】:

文档Convert an anonymous account to a permanent account 指出了该过程的 3 个步骤,但是第 2 步似乎违反了第 1 步。

  1. 当用户注册时,为用户的身份验证提供程序完成登录流程最多(但不包括)调用其中一个 Auth.signInWith 方法。例如,获取用户的 Google ID 令牌, Facebook 访问令牌,或电子邮件地址和密码。
  2. 获取新身份验证提供程序的 AuthCredential:var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken);
  3. 将 AuthCredential 对象传递给登录用户的链接方法...

我的问题是:第 2 步。response 仅存在 调用第 1 步所说的 Auth.signInWith 方法之一 做。如何将匿名帐户与 oAuth 帐户关联?

【问题讨论】:

  • 除非我理解错了,否则焦点应该是“匿名用户将在成功解析.linkWithPopup(provider) 方法后升级。”这就是你所要做的。 ...不确定上面显示的现有步骤的全部内容。

标签: firebase firebase-authentication


【解决方案1】:

文档中的内容是,在第 1 步中,您应该不要使用 Firebase 登录。第 1 步的意思是您应该使用提供商登录(即 Google、Facebook、Twitter),然后获取 提供商令牌,然后 链接提供者令牌到现有 Firebase 匿名帐户使用提供者令牌通过 Firebase 登录。重要的是文档引用的令牌来自提供者,而不是 Firebase。

您没有指定您打算使用哪种语言/平台来执行此操作,但这只是 Dart/Flutter 的示例:

GoogleSignInAccount googleUser = await _googleSignIn.signIn();
// Get the provider auth token
GoogleSignInAuthentication googleAuth = await googleUser.authentication;     
FirebaseUser user = await _auth.currentUser();
// Check if the user has signed in as anonymous
if (user != null) { 
  // Use the provider auth token to link the anonymous account
  await _auth.linkWithGoogleCredential(
      accessToken: googleAuth.accessToken, idToken: googleAuth.idToken);
} else if (user == null || user.email == null) {
  user = await _auth.signInWithGoogle(
    accessToken: googleAuth.accessToken, 
    idToken: googleAuth.idToken,
  );
}

【讨论】:

  • 我正在使用 web/javascript SDK。在我看来,工作流程场景是(1)用户正在使用我的应用程序和匿名帐户。 (2) 我的应用提供创建(永久)帐户的功能。
  • 这太令人困惑了..“使用提供商登录”——这到底是什么?
猜你喜欢
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 2017-06-03
相关资源
最近更新 更多