1

嘿奇怪的问题在这里。

我正在检查用户是否是有效的 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()));
}

这让我认为这与我在模拟器上运行应用程序的事实有关,因为它的时间与实际时间不同,但这对我来说没有意义,也许我错了,如果我'我错了,这就是问题我该如何解决?

如果不是,有谁知道可能导致此问题的原因?

4

0 回答 0