使用signInWithEmailAndPassword检索用户名

时间:2019-05-02 14:09:05

标签: database firebase firebase-authentication

我使用Firebase Admin SDK管理我的用户。 注册后,我会向我的端点发送电子邮件,密码和用户名。 我createUserWithEmailAndPassword并在我的Firestore中创建一个文档

通过这种方式,我可以检查文档是否已存在,并返回用户名/句柄已被使用的错误。

Firestore
  - users
    - handle
      * email
      * userId (from createUserWithAndPassword Response)
      * createdAt

在用户signInWithEmailandPassword之后,我只有令牌,电子邮件和userId ..但我需要使用句柄才能获得正确的用户详细信息。

我从文档中得到的是有一个默认的displayName属性,但我不知道如何在注册时进行设置。

或者我应该创建一个自定义令牌并将其存储在其中吗。

我不确定该怎么走

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

这是您想要的简单方法:

 mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if(task.isSuccessful()){
                    // Sign in success
                    FirebaseUser user = mAuth.getCurrentUser();

                    UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                        .setDisplayName(mName).build();

                    user.updateProfile(profileUpdates).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                Log.d(TAG, "User profile updated.");
             }
         }
     });


                }
    });

然后,要检索它,请在需要的地方使用它:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address etc
    String name = user.getDisplayName();
    String email = user.getEmail();
}

有多种方法,但我建议使用这种方法:)