6

私は、ユーザーに署名するために、私はこのコードを使用しなければならないことを泉:ユーザーが既にAuth.GoogleSignInApiを使用してログインしているかどうかを確認しますか?

new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        disconnect(); 
       } 
      }); 

をサインアウトする

Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
startActivityForResult(signInIntent, RC_SIGN_IN); 

しかし、ユーザーはアプリを再起動し、彼がすでにログインしているとき(および前にサインアウトしていない)この「現在ログインしている」状態を検出することは可能ですか?

明らかに、アプリの設定(共有設定)に「ログイン」を保存することは可能ですが、Google APIを使用して検出する方法はありますか?私は解決策見つけ

答えて

10

Here:ここ

OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient); 
     if (opr.isDone()) { 
      // If the user's cached credentials are valid, the OptionalPendingResult will be "done" 
      // and the GoogleSignInResult will be available instantly. 
      Log.d(TAG, "Got cached sign-in"); 
      GoogleSignInResult result = opr.get(); 
      handleSignInResult(result); 
     } else { 
      // If the user has not previously signed in on this device or the sign-in has expired, 
      // this asynchronous branch will attempt to sign in the user silently. Cross-device 
      // single sign-on will occur in this branch. 
      showProgressDialog(); 
      opr.setResultCallback(new ResultCallback<GoogleSignInResult>() { 
       @Override 
       public void onResult(GoogleSignInResult googleSignInResult) { 
        hideProgressDialog(); 
        handleSignInResult(googleSignInResult); 
       } 
      }); 
     } 
0

を私はこれは実際に新しいものです。この

GoogleSignInAccount lastSignedInAccount= GoogleSignIn.getLastSignedInAccount(context); 
if(lastSignedInAccount==null){ 
// user has already logged in, you can check user's email, name etc from lastSignedInAccount 
String email = lastSignedInAccount.getEmail(); 
}else{ 
// user is not logged in with any account 
} 
+0

のための簡単な解決策を見つけました。 PlayサービスSDKのバージョンは11.6+以上である必要があります。 – Jenix

関連する問題