34

Android アプリには、ユーザーがアプリを承認してリンクを共有する機能があります。

また、ユーザーが facebook からログアウトするオプションを提供する必要があり、ユーザーがログインしていない (またはアプリが承認されていない) 場合は、条件付きでこのボタンを無効にする必要があります。

Android SDKで、ユーザーがログインしているかどうかを FB に問い合わせるAPI 呼び出しが見つからないようです。

私が見つけたのはgetAccessExpires()

現在のセッションの有効期限 (Unix エポックからのミリ秒単位) を取得するか、セッションが期限切れでないか存在しない場合は 0 を取得します。

セッションが 0 に等しいかどうかを確認する方法はありますか? または、私が見逃しているものがありますか?

4

10 に答える 10

54

Facebook SDK 4.x バージョンには、現在別の方法があります。

boolean loggedIn = AccessToken.getCurrentAccessToken() != null;

また

関数を使用して

boolean loggedIn;
//...
loggedIn = isFacebookLoggedIn();
//...
public boolean isFacebookLoggedIn(){
    return AccessToken.getCurrentAccessToken() != null;
}

より良いリファレンスについては、このリンクを確認してください https://developers.facebook.com/docs/facebook-login/android この見出しも確認してください 「アクセストークンとプロファイル」 「AccessTokenをチェックすることで、人がすでにログインしているかどうかを確認できます. getCurrentAccessToken() および Profile.getCurrentProfile()

于 2015-03-31T18:36:21.113 に答える
6

読者への注意:これは、新しい FB 3.0 SDK では廃止されました。

facebook.isSessionValid()ユーザーがログインしている場合は true、ログインしていない場合は false を返します。

于 2012-09-13T21:31:28.707 に答える
3

Android Studio と:

compile 'com.facebook.android:facebook-android-sdk:4.0.1'

次に、次のようにログインを確認します。

private void facebookPost() {
    //check login
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    if (accessToken == null) {
        Log.d(TAG, ">>>" + "Signed Out");
    } else {
        Log.d(TAG, ">>>" + "Signed In");
    }
}
于 2015-04-29T06:38:12.973 に答える
3
Session.getActiveSession().isOpened()

ユーザーがログインしている場合は true、ログインしていない場合は false を返します

于 2013-05-28T03:24:46.047 に答える
2

@diljeetは正しかった。https://stackoverflow.com/a/29375963/859330

さらに、

return AccessToken.getAccessToken() != null && Profile.getCurrentProfile()!=null;

常にこのように動作します。

于 2016-07-19T19:38:36.257 に答える
1

Facebook Android SDK 4.x の場合、@Diljeet が言ったように「AccessToken.getCurrentAccessToken()」を使用する必要がありますが、彼のチェックはうまくいきませんでした。

アクティビティ「onCreate」:

facebookAccessToken = AccessToken.getCurrentAccessToken();

セッションがまだアクティブかどうかを確認するには(「onResume」メソッドで作成しましたが、必要な場所で実行します):

  if(facebookAccessToken != null){
        sessionExpired = facebookAccessToken.isExpired();
  }else{
        sessionExpired = true;
  }

詳細はhttps://developers.facebook.com/docs/facebook-login/androidをご覧ください

于 2015-11-18T12:44:25.263 に答える
0

これは、新しい SDK で非常にうまく機能しているようです。

private boolean isFacebookLoggedIn(){
    Session session = Session.getActiveSession();

    if (session != null) {
        //Session can be open, check for valid token
        if (!session.isClosed()) {
            if(!session.getAccessToken().equalsIgnoreCase("")){
                return true;
            }
        }
    }
    return false;
}
于 2014-07-02T16:33:49.970 に答える
0

同じ問題がありました。SDK 4.0 を使用した私のソリューションは次のとおりです。

まず、ログイン チェックを扱うアクティビティでは、必ずこのプライマリを呼び出してください。

        FacebookSdk.sdkInitialize(this.getApplicationContext());

あなたの onCreate メソッドにこれを入れてください:

updateWithToken(AccessToken.getCurrentAccessToken());

    new AccessTokenTracker() {
        @Override
        protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken newAccessToken) {
            updateWithToken(newAccessToken, handler);
        }
    };

次に、次のメソッドを追加します。

private void updateWithToken(AccessToken currentAccessToken) {
    if (currentAccessToken != null) {
        fillUIWithFacebookInfos(handler);
    } else {
        login();
    }
}

この方法では、すでにログインしているユーザーと新しくログインしたユーザーを処理します。

于 2015-08-24T09:41:30.737 に答える