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