2017-07-02 534 views
0

我正在开发一款android应用程序,其中用户可以通过注册到应用程序登录并使用谷歌选项登录。使用谷歌账号登录 - 身份验证

用表单登录工作得很好。但是,当用户使用Google登录时,我会将用户重定向到注册屏幕以获取更多信息,然后再将用户登录到主屏幕。我唯一的问题是,当用户第一次登录谷歌时,用户被重定向到第二个屏幕,在那里他注册他/她的附加信息。

我的要求是,只有当用户第一次登录谷歌,我希望他被重定向到SIgn的活动,以获得更多的信息。第一次之后,我想让他直接重定向到主屏幕。我如何实现这一目标?

这是我到目前为止尝试过的。只需发布必要的代码即可。

mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      if(firebaseAuth.getCurrentUser() != null){ 
       startActivity(new Intent(SignInActivity.this,ContactDetailsActivity.class)); 
      } 
     } 
    }; 
else if(view == signInWithGoogleButton) 
    { 
     Toast.makeText(SignInActivity.this,"Signing in with google...",Toast.LENGTH_SHORT).show(); 
     Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
     startActivityForResult(signInIntent, RC_SIGN_IN); 

    } 
@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()) { 
      // Google Sign In was successful, authenticate with Firebase 
      GoogleSignInAccount account = result.getSignInAccount(); 
      firebaseAuthWithGoogle(account); 
     } else { 
      // Google Sign In failed, update UI appropriately 
      // ... 
      Toast.makeText(this,"not signed in",Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    mAuth.addAuthStateListener(mAuthListener); 
    // Check if user is signed in (non-null) and update UI accordingly. 
    FirebaseUser currentUser = mAuth.getCurrentUser(); 
    //updateUI(currentUser); 
} 

在注册屏幕上,我只是得到有关用户的电话号码,出生日期等信息。所以我的问题是,用户第一次点击用谷歌按钮登录时,用户必须通过注册。第一次后,我希望他直接重定向到主屏幕。

请帮助我如何做到这一点。

回答

0

我觉得enableAutoManage可以解决这个问题

mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .enableAutoManage(this /* FragmentActivity */, new GoogleApiClient.OnConnectionFailedListener() { 
       @Override 
       public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
       } 
      }) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build();