web-dev-qa-db-ja.com

Android Googleサインイン:ユーザーがログインしているかどうかを確認します

ユーザーが既にGoogleログインでログインしているかどうかを確認する方法を探しています。

いくつかのロギングAPI(Facebook、Google、カスタム)をサポートしているので、次のような静的ヘルパーメソッドを作成したいと思います:User.isUserLoggedIn()

Facebookで使用するもの:

_if AccessToken.getCurrentAccessToken() != null { 
   return true
} 
_

ユーザーがFacebook経由でログインしているかどうかを確認します。

IOSでは、次のようにして、ユーザーがGoogleサインイン経由でログインしているかどうかを確認します。

_GIDSignIn.sharedInstance().hasAuthInKeychain()
_

私の質問:Androidがあります:

GIDSignIn.sharedInstance().hasAuthInKeychain()

コールバックを伴わない方法を探しています。

ありがとう!マックス

19
Maxence Duthoo

この機能を使用できます

private boolean isSignedIn() {
  return GoogleSignIn.getLastSignedInAccount(context) != null;
}

https://developers.google.com/Android/reference/com/google/Android/gms/auth/api/signin/GoogleSignIn

public static GoogleSignInAccount getLastSignedInAccount(Context context)

ユーザーがサインインした最後のアカウントを取得します。

戻り値:前回成功した既知のサインインからのGoogleSignInAccount。ユーザーが以前にサインインしたことがないか、サインアウト/アクセスを取り消した場合、nullが返されます。

11
Phan Van Linh

the Androidログインドキュメント をご覧ください。

ユーザーがログインしているかどうかを確認するには、isConnected()を呼び出します。

if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
   // signed in. Show the "sign out" button and explanation.
   // ...
} else {
   // not signed in. Show the "sign in" button and explanation.
   // ...
}
7
Dopaz

Kotlinで実装され、Ankoを使用:

    val googleSignInAccount = GoogleSignIn.getLastSignedInAccount(act)
    if (googleSignInAccount != null) {
        getGoogleSignInClient().signOut()
    }
2
swapnil