0

アンドロイドアプリケーションでFacebook認証とGoogle認証を統合しています。 アプリケーションを起動しているときに、ユーザーがFacebook認証またはGoogle認証を使ってアプリにログオンしているかどうかを確認したい。私はFacebookで以下のコードを使って成功しました:ユーザーがGoogleアカウントでログインしているかどうかを確認する方法

if (Profile.getCurrentProfile() != null && AccessToken.getCurrentAccessToken() != null){ 
     Intent i = new Intent(Splash.this, SecondActivity.class); 
     startActivity(i); 
     finish(); 
} 

しかしGoogleで成功していません。また、私は多くの答えを探しましたが、そのほとんどはGoogle認証にFirebaseを使用していました。

Google認証を使用し、Firebaseを使用しないでこれを達成するにはどうすればよいでしょうか。

助けていただければ幸いです。 ありがとうございます!

+0

GoogleSignInApiのsilentSignInメソッドを使用して、ユーザーのキャッシュされた資格情報の有効性をチェックできます。 –

+0

@SudheeshRちょっと詳しく教えてもらえますか? –

+0

GoogleSignInApi.silentSignIn()メソッドを使用して、ログイン資格が有効かどうかを確認できます。 資格情報が有効かどうかをチェックするために使用されるOptionalPendingResultオブジェクトを返します。資格情報が有効な場合、OptionalPendingResultのisDone()メソッドはtrueを返します。 getメソッドを使用して、すぐに結果を取得できます(使用可能な場合)。 –

答えて

0
@Override 
    public void onStart() { 
     super.onStart(); 

     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); 
       } 
      }); 
     } 
    } 
3

GoogleSignInApi.silentSignIn()メソッドを使用して、ログイン資格情報が有効かどうかを確認できます。 資格情報が有効かどうかを確認するために使用されるOptionalPendingResultオブジェクトを返します。信任状が有効な場合、OptionalPendingResultisDone()メソッドはtrueを返します。 getメソッドを使用して、すぐに結果を取得できます(使用可能な場合)。 OptionalPendingResultため

Androidのドキュメント: https://developers.google.com/android/reference/com/google/android/gms/common/api/OptionalPendingResult

GoogleSignInApiのためのAndroidのドキュメント:資格情報が有効かそうでない場合 https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInApi

はここでチェックするためのコードです。

OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(google_api_client); 
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); 
} 
関連する問題