ここに奇妙な問題があります。
ユーザーが有効なaccess_tokenであるかどうかを確認しており、そうでない場合は承認します。今私はこのコードを使用しています:
mPrefs = getSharedPreferences("Facebook", MODE_PRIVATE);
String access_token = mPrefs.getString("access_token", null);
long expires = mPrefs.getLong("access_expires", 0);
if(access_token != null) {
facebook.setAccessToken(access_token);
}
if(expires != 0) {
facebook.setAccessExpires(expires);
}
if(!facebook.isSessionValid()) {
// preform authorize dialog
}
else
{
//break into pentagon
}
そしてisSessionValid()
それが有効であることを返しています。その直後に、Open Graphにリクエストを送信します。これにより、次の結果が返されます。
{"error":{
"type":"OAuthException",
"message":"Error validating access token: Session has expired at unix time 1337364000.
The current unix time is 1337802012.",
"error_subcode":463,
"code":190}}
そして、それは私を非常に混乱させます。 この回答は、彼が古いSDKソースを使用していることを示唆しましたが、私の場合は問題ではありません。
だから私はFacbookSDKのソースコードをチェックしました、そしてこれは方法です:
public boolean isSessionValid() {
return (getAccessToken() != null) &&
((getAccessExpires() == 0) ||
(System.currentTimeMillis() < getAccessExpires()));
}
実際の時間とは時間が異なるため、エミュレータでアプリを実行しているという事実と関係があると思いましたが、それは私には意味がありません、おそらく私は間違っています、そして私が間違っています。これが問題です。どうすれば解決できますか?
そうでない場合、この問題の原因を誰かが知っていますか?