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

Firebase将用户身份验证链接到另一个活动

暴辰龙
2023-03-14

我已经说了一个用户谁登录到我的应用程序使用一个活动通过Firebase,我可以访问用户的详细信息在下一个活动。例如:

public class LoginActivity extends AppCompatActivity {

    EditText editText;
    EditText editText2;
    Button button;
    public FirebaseAuth Auth = FirebaseAuth.getInstance();
    public FirebaseAuth.AuthStateListener authlistener;
    String email, pass;
    ProgressBar bar;

    public View.OnClickListener buttonListener = new View.OnClickListener() {
        public void onClick (View view){
            email = editText.getText().toString().trim();
            pass = editText2.getText().toString().trim();
            logInUser();

        }};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText)findViewById(R.id.editText);
        editText2 = (EditText)findViewById(R.id.editText2);
        button = (Button)findViewById(R.id.button2);
        Auth = FirebaseAuth.getInstance();
        button.setOnClickListener(buttonListener);
        bar = (ProgressBar)findViewById(R.id.progressBar2);
        bar.setVisibility(View.INVISIBLE);

        authlistener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    // User is signed in

                } else {
                    // User is signed out

                }
                // ...
            }
        };
        // ...
    }

    @Override
    public void onStart() {
        super.onStart();
        Auth.addAuthStateListener(authlistener);
    }

    @Override
    public void onStop() {
        super.onStop();
        if (authlistener != null) {
            Auth.removeAuthStateListener(authlistener);
        }
    }

    public void logInUser(){
        bar.setVisibility(View.VISIBLE);

        Auth.signInWithEmailAndPassword(email, pass)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {

                        if(task.isSuccessful()) {

                            Intent loggedInActivity = new Intent(getApplicationContext(), Loggedin.class);
                            startActivity(loggedInActivity);

                        }
                        else{

                            Toast.makeText(getApplicationContext(), "There was an error, try again", Toast.LENGTH_SHORT).show();
                        }


                    }
                });


    }
}
public class Loggedin extends AppCompatActivity {

    Button changeMail, changePass;
    String oldPassword;
    String newPassword;
    EditText oldpass, newpass;
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    public FirebaseAuth Auth = FirebaseAuth.getInstance();

    public void updatePassword(){
        oldPassword = oldpass.getText().toString();
        newPassword = newpass.getText().toString();



    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_loggedin);
        changeMail = (Button)findViewById(R.id.changeMail);
        changePass = (Button)findViewById(R.id.changePass);
        oldpass = (EditText)findViewById(R.id.oldPass);
        newpass = (EditText)findViewById(R.id.newPass);
        oldpass.setVisibility(View.INVISIBLE);
        newpass.setVisibility(View.VISIBLE);

    }
}

共有1个答案

闽涵蓄
2023-03-14

你不需要监听器...它是一个单独的,可以在您的整个活动中使用。只需将其添加到基本活动中

public FirebaseUser getFirebaseUser() {
    return FirebaseAuth.getInstance().getCurrentUser();
}

或者在需要的地方使用if(firebaseauth.getinstance().getCurrentUser()!=null){...}

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

  • 将匿名帐户转换为永久帐户的文档指出了流程的3个步骤,但是步骤2似乎违反了步骤1。 当用户注册时,完成用户身份验证提供者的登录流程,直到(但不包括)调用其中一个身份验证提供者。用方法来表示。例如,获取用户的Google ID令牌、Facebook访问令牌或电子邮件地址和密码 获取新身份验证提供程序的身份验证凭据:

  • 问题内容: 我正在尝试将我的电话号码与我的电子邮件密码身份验证相关联。所以我使用以下步骤建立我的注册: 用户输入电子邮件地址和密码。 然后我打电话 那么我需要将当前帐户与电话号码相关联,因此我正在使用 但是,我没有看到任何链接。在我的Firebase控制台中创建的2个帐户和当前用户的详细信息中只有电话号码。当我再次使用电子邮件和密码登录并检查用户详细信息时,电话号码不存在! 请在下面找到我的代码:

  • 在android studio 3.1.3中,用于链接firebase身份验证的“implementation'com.google.firebase:firebase-auth:11.6.0'”和用于链接firebase数据库的“implementation'com.google.firebase:firebase-database:11.8.0'”是app level Gradle中提供的默认

  • 在我的应用程序中,用户注册和认证使用Firebase。应用程序中的所有活动只对经过身份验证的用户开放。但在应用程序内部,有一个活动(ActivityB)是基于用户的数据。此活动再次限制了电子邮件和密码登录(以便没有安装该应用程序的人可以从其他用户检查此活动)。 即使User1/User2从ActivityB签名,user也是从整个firebase身份验证签名。 我所给的只是指示命令。但不管用