isSessionValid()返回true,但实际上并非如此

时间:2012-05-23 20:06:53

标签: android facebook facebook-opengraph facebook-android-sdk

这里有个奇怪的问题。

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

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

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

0 个答案:

没有答案