2011-12-27 12 views
0

私はofficial facebook SDK for Androidを使用していますが、セッション管理に関するいくつかの問題に直面しています。具体的には、セッションがまだ有効かどうかをテストする方法はわかりません。Facebook APIのメソッド:isSessionValid()は常にtrueを返します

まず、私は初期化やFacebookへのコネクションを許可する:

Facebook facebook = new Facebook(context.getString(R.string.facebook_app_id)); 
facebook.authorize(...); // Works ok 

その後、私は、ユーザーの接続を解除したい:

facebook.logout(context); 

しかし、私は、次のまだ戻り、ということを行っているかつて

facebook.isSessionValid(); 

返品はなぜですか

私が間違っていることは何ですか?

ありがとうございます!

+0

ここで、あなたは 'isSessionValid'を呼び出していますか?ログアウトプロセスが完了していないときに 'logout'を呼び出した直後に呼び出すかもしれません。 'FBSDidLogout'が' FBSessionDelegate'で呼び出されるのを待ちます。そのコールバックの前に、セッションはまだ有効です。 –

答えて

2

古いバグが発生した可能性があります。あなたのFacebook SDKは最新のものですか?

the sourceによると、ログアウトにはsetAccessToken(null);がコールされます。トークンがNULLの場合、isSessionValid()はfalseを返す必要があります。

public boolean isSessionValid() { 
    return (getAccessToken() != null) && 
      ((getAccessExpires() == 0) || 
        (System.currentTimeMillis() < getAccessExpires())); 
} 

ゲッター/セッターは、いずれかのいずれかのヌルチェックを行いませんので、ログアウト中()の呼び出しは所望の効果を持っている必要があります。ここでは、参照用のコードですです。

2

あなたのアプリにFacebookをどのように統合したのか分からないが、共有の環境設定からアクセストークンを確認していますか?もしあなたが本当に新しいアクセストークンを設定していることを確認する。たとえば、ログアウト後、新しいアクセストークン(null)を書き出して、次にユーザーに再度ログインするように指示するとします。

+0

はい、それは私がすでにやっていることです:) –

関連する問題