嘿奇怪的问题在这里。
我正在检查用户是否是有效的 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 源,这在我的情况下不是问题。
所以我检查了 Facbook SDK 的源代码,这是方法:
public boolean isSessionValid() {
return (getAccessToken() != null) &&
((getAccessExpires() == 0) ||
(System.currentTimeMillis() < getAccessExpires()));
}
这让我认为这与我在模拟器上运行应用程序的事实有关,因为它的时间与实际时间不同,但这对我来说没有意义,也许我错了,如果我'我错了,这就是问题我该如何解决?
如果不是,有谁知道可能导致此问题的原因?