Firebase Auth:链接匿名帐户

时间:2018-08-09 15:43:41

标签: firebase firebase-authentication

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

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

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

1 个答案:

答案 0 :(得分: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,
  );
}