具有电子邮件,密码和数据库的Firebase身份验证

问题描述 投票:-3回答:1

我是这个领域的新手。我想用电子邮件和密码实现Firebase登录并将该用户的一些数据(硬币)存储在该用户的Firebase数据库中。我要建立登录和注册以及主要活动。在主要活动中,文本显示Firebase的硬币。该用户的UUID中的硬币。还有一个初始屏幕,如果用户登录,它将重定向到主要活动,并且主要活动检查uuid并显示该用户硬币。

java android firebase firebase-realtime-database
1个回答
0
投票
FirebaseUser currentUser;
String UID;
FirebaseAuth mAuth;
DatabaseReference databaseReference;
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser();

databaseReference = FirebaseDatabase.getInstance().getReference().child("Users");


if (currentUser != null) { //Check if the user is logged in or not

            String uid = currentUser.getUid(); //Get the UID of user

            HashMap<String, Object> map = new HashMap<>();
            map.put("coins", coins);

            //map.put("uid", uid); //add other data you want to upload

            databaseReference.child(uid).setValue(map);

}

如果要使用UUID代替uid,请使用:

String uuid = UUID.randomUUID().toString();

登录

这里是firebase auth的官方文档-https://firebase.google.com/docs/auth/android/google-signin

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();

        mGoogleSignInClient = GoogleSignIn.getClient(this, gso);



        signInButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                signIn();
            }
        });


private void signIn() {

        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);

    }

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RC_SIGN_IN) {
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignIn(task);
        }

    }

private void handleSignIn(Task<GoogleSignInAccount> completedTask) {

        try {
            // Google Sign In was successful, authenticate with Firebase
            GoogleSignInAccount account = completedTask.getResult(ApiException.class);
            Toast.makeText(this, "success", Toast.LENGTH_SHORT).show();
            assert account != null;
            firebaseAuthWithGoogle(account);
        } catch (ApiException e) {
            // Google Sign In failed, update UI appropriately
            Log.e("TAG_failure", "Google sign in failed");
            Toast.makeText(this, "Failed", Toast.LENGTH_SHORT).show();
        }

    }

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {



        AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {

                            Log.d("TAG_S", "signInWithCredential:success");



                        } else {
                            // If sign in fails, display a message to the user.
                            Log.e("TAG_F", "signInWithCredential:failure", task.getException());

                        }

                    }
                });

    }

© www.soinside.com 2019 - 2024. All rights reserved.