当前位置: 首页 > 知识库问答 >
问题:

使用自定义标识符的Firebase身份验证

江嘉悦
2023-03-14

我想对我的Vue使用Firebase身份验证。js应用程序考虑以下限制:

  • 我无法使用任何受支持的提供商(Facebook、Google等)
  • 我不能使用电子邮件-该应用程序是为孩子们设计的,因此,我想使用他们在注册时选择的唯一昵称,而不是电子邮件,该昵称必须使用本地rtl语言(非英语)
  • 我想使用firebase云函数作为唯一的服务器端代码

期望的结果是:a)使用昵称、密码注册

如何使用firebase身份验证对我的用户进行身份验证?

共有2个答案

程和煦
2023-03-14

注册

 NickName=nickNameText.getText().toString.trim()+"@firebase.com";
     Password  = passwordText.getText().toString().trim();

        firebaseAuth.createUserWithEmailAndPassword(NickName, Password)
                        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                //checking if success
                                if(task.isSuccessful()){
                                    //display some message here
                                    if(type=="User") {


                                        task.getResult().getUser().getUid();
                                        AddUserInfo(task.getResult().getUser().getUid());


                                    }else
                                    {
                                        AddAlimInfo(task.getResult().getUser().getUid());
                                    }

                                Intent intent=new Intent(getApplicationContext(),MainActivity.class);
                                    intent.putExtra("Type",TypeSpinnerStr);
                                    startActivity(intent);


                                  //  startActivity(new Intent(Signup_Activity.this, MainActivity.class));
                                    Toast.makeText(getApplicationContext(),"Successfully registered",Toast.LENGTH_LONG).show();
                                }else{
                                    //display some message here
                                    Toast.makeText(getApplicationContext(),"Registration Error",Toast.LENGTH_LONG).show();
                                }
                                progressDialog.dismiss();
                            }
                        });

            }




    private void AddUserInfo(String id) {
              UserClass User=new UserClass();
                User.setUserID(id);
                User.setUserName(Name);
               Email+="@firebase.com";
                User.setUserNickname(NickName);
                User.setUserPassword(Password);
             mdatabaseReference.child("Users").child(UserID).setValue(User);

        }

登录名

private void userLogin(){



        nickName= editTextNickName.getText().toString().trim();
       password  = editTextPassword.getText().toString().trim();





            //if the email and password are not empty
            //displaying a progress dialog


            progressDialog.setMessage("Logging in  Please Wait...");
            progressDialog.show();

            //logging in the user
            firebaseAuth.signInWithEmailAndPassword(nickName, password)
                    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {

                            //if the task is successfull
                            if(task.isSuccessful()){
                                //start the profile activity


                                initFirebase();
             //Check in user Node that whether data exists or not
            //if exists then login else show Snakbar data does not exist

                            mAuthUserStr = mAuth.getCurrentUser().getUid();
                                 mEmail=mAuth.getCurrentUser().getEmail();

                                AddEventFireBaseListner(mAuthUserStr,TypeSpinnerStr);




                                //  startActivity(new Intent(getApplicationContext(), MainActivity.class));
                            }
                        }
                    });

        }//end of user 

 public void AddEventFireBaseListner(String uid,String userType) {


//     mdatabaseReference.child("Users").child(UserID).setValue(User);


    circular_progress2.setVisibility(View.VISIBLE);




mdatabaseReference.child("Users").child(uid).orderByKey("user_id").equalTo(uid).addListenerForSingleValueEvent(new ValueEventListener() {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) {

     //Compare your Auth Email with user Login email
    }
    }
穆俊哲
2023-03-14

您可以使用Firebase自定义身份验证或使用Firebase Admin SDK for node和createUser()函数来完成此操作。

您的用户登录流如下所示:

用户在注册屏幕中输入所需凭据。

你在用户名后加上你的域名作为电子邮件,比如说你用chris的用户名注册,然后在幕后加上你的域名。com所以它变成了chris@yourdomain.com 。这确实阻止了重置密码的选项,因此请记住这一点。

你可以在这里看到Frank关于同一主题的答案用户名验证而不是电子邮件

 类似资料:
  • 我正在使用fire base制作一个反应原生应用程序,用于使用电子邮件登录im并通过身份验证。但是,有没有办法使用用户名和密码登录?

  • 我正在尝试按照以下准则使用谷歌的新火力基础 sdk 设置自定义身份验证: https://firebase.google.com/docs/auth/server#use_a_jwt_library 在 samble 代码中它说: 从JSON密钥文件中获取您的服务帐户的电子邮件地址和私钥 不幸的是,我不知道从哪里获取这个json文件。如果我去我的firebase控制台(https://consol

  • 我正在将swagger应用于我的一个项目。 然后,他们应该在标头中随每次调用一起发送此令牌。 所以它就像: 看看swagger文档,它似乎只是为了处理OAuth而设置的。有没有办法让swagger以我的方式处理身份验证?我的意思是在生成的代码中。我可以为项目生成代码,它只有“Basic:...”作为选项。

  • 在过去的几周里,我一直在努力掌握KeyClope,这样我就可以实现一种使用遗留提供商(基于Oracle,带有会话表和各种奇怪的东西)对用户进行身份验证的方法。我们计划在不久的将来解决这个问题,但目前我们必须解决这个问题,所以我们的想法是在前线使用KeyClope——利用它提供的主要好处,比如SSO——在需要身份验证的应用程序中省略传统的身份验证提供程序。 我读了一些关于构建自定义OIDC身份提供程

  • 于是我在这里看到:https://firebase . Google . com/docs/auth/web/account-linking # link-auth-provider-credentials-to-a-user-account现在可以在Firebase中链接用户账号了。我还看到Firebase提供了匿名认证的功能,它为一个用户创建一个用户会话,不需要任何凭证。 在我们的应用程序中,

  • 我试图在一个反应式Spring Boot应用程序中配置一个Spring Security性,该应用程序具有一个Vuejs前端,在未经身份验证时将用户重定向到外部OpenID提供程序(用于身份验证)。在用户通过OpenID提供程序进行身份验证并重定向回应用程序(前端)后,将根据OpenID提供程序的响应创建用户名密码身份验证令牌(身份验证),并手动进行身份验证。 但是,在执行此操作时,应用程序似乎无