繁体   English   中英

Google Firebase登录无法正常工作

[英]Google Firebase login not working

我制作了一个脚本,该脚本通过google登录,然后从google登录名中获取用户名,并将其传递给下一个活动。

问题是,我想创建一个Facebook登录按钮,试图将其添加到脚本中,但是没有用。 现在,我试图撤消使Facebook登录按钮正常工作的所有操作,但是现在,我的Google登录也失败了。

我已经测试并尝试了4个多小时,而我找不到答案。

现在,我到目前为止所做的就是测试哪里出错了。 这个问题的答案是; onActivityResult我在日志中确实得到了“ firebaseauthwithgoogle:+ acct.getId”。 但我没有收到来自“ mAuth.signInWithCredential(credential).addOnCompleteListener”的响应

它不会执行“ onComplete”方法。 我真的不明白。 请帮助我让它再次工作:)

这是我的脚本:

    mAuth = FirebaseAuth.getInstance();
    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                // User is signed in
                Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
            } else {
                // User is signed out
                Log.d(TAG, "onAuthStateChanged:signed_out");
            }
            // ...
        }
    };

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

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    /*mGoogleBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            signIn();

        }
    });*/
    findViewById(R.id.sign_in_button).setOnClickListener(this);

}


@Override
protected void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(mAuthListener);


}

@Override
protected void onStop() {
    super.onStop();
    if(mAuthListener != null)
        mAuth.removeAuthStateListener(mAuthListener);
}

@Override
protected void onPause() {
    super.onPause();
    AppEventsLogger.deactivateApp(this);
}

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

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {
            System.out.println("ALEX: Result is Succes");
            // Google Sign In was successful, authenticate with Firebase
            GoogleSignInAccount account = result.getSignInAccount();
            firebaseAuthWithGoogle(account);
        } else {
            System.out.println("ALEX: RESULT IS FAILED!!");
            // Google Sign In failed, update UI appropriately
            // ...
        }
    }
}

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
    Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
                    System.out.println("Current user : " + mAuth.getCurrentUser());
                    // If sign in fails, display a message to the user. If sign in succeeds
                    // the auth state listener will be notified and logic to handle the
                    // signed in user can be handled in the listener.
                    if (!task.isSuccessful()) {
                        Log.w(TAG, "signInWithCredential", task.getException());
                        Toast.makeText(MainActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                    }
                    // ...
                }


            });
}



private void logIn() {


    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    Intent myIntent = new Intent(MainActivity.this, LoggedInIndex.class);


    if (user != null) {
        myIntent.putExtra("uid", user.getDisplayName());
        myIntent.putExtra("email", user.getEmail());
        myIntent.putExtra("pic", user.getPhotoUrl().toString());
    } else {
        myIntent.putExtra("uid", "failed");
        myIntent.putExtra("email", "failed");
    }


    startActivity(myIntent);

}
private void signIn(){
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);


}

public static void signOut(){
    FirebaseAuth.getInstance().signOut();
}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
    Log.d(TAG, "Connection failed.");
}



@Override
public void onClick(View view) {
    switch(view.getId()){
        case R.id.sign_in_button:
            signIn();

            break;
    }
}

我知道了

是模拟器引起了麻烦。 到目前为止,牛轧糖对我来说不是成功的。 回到6.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM