Я делаю действие, когда вы входите в систему с Google, все у меня в порядке, но мне нужно проверить, если пользователь уже вошел в систему, и поэтому направьте меня в "MainActivity"

Соответствующий код:

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


    mGoogleApi = new GoogleApiClient.Builder(this).enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
        @Override
        public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

        }
    }).addApi(Auth.GOOGLE_SIGN_IN_API, gso).build();



}

private void sigInGoogle(){
Intent intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApi);
    startActivityForResult(intent, RC_SIGN_IN);

}

private void handleResult(GoogleSignInResult result){

    if(result.isSuccess()){
        Intent intent1 = new Intent(RegisterActivity.this, UserActivity.class);
        intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent1);

    }
}


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

    if(requestCode == RC_SIGN_IN){
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        handleResult(result);

    }
}
1
TheQuestionerXxx 24 Апр 2017 в 05:26

2 ответа

Лучший ответ

Вы можете проверить провайдера аутентификации, используя user.getProviders (). Get (0); который вернет логин провайдера. Используйте это в AuthStateListener, если user! = Null.

3
Sagar Raut 24 Апр 2017 в 02:57

Это должно работать, вы можете использовать AuthListener

Объявить AuthListener:

    // [START declare_auth_listener]
    private FirebaseAuth.AuthStateListener mAuthListener;
    // [END declare_auth_listener]

   // [START declare_auth]
    private FirebaseAuth mAuth;
    // [END declare_auth]

Поместите это также в OnStart и OnStop:

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

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

Затем проверьте с помощью этого:

// [START auth_state_listener]
        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();

                if (user != null) {   
                    // User is signed in        
                    //redirect
                    Intent home = new Intent(MainActivity.this , HomeActivity.class);
                    startActivity(home);
                    Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
                } else {
                    // User is signed out
                    Log.d(TAG, "onAuthStateChanged:signed_out");
                }

            }
        };
 // [END auth_state_listener]
0
Goofy_Phie 24 Апр 2017 в 03:28