Facebook API方法:是Session Valid()始终返回true

时间:2011-12-27 16:43:23

标签: android facebook

我正在使用official facebook SDK for Android,我正面临有关会话管理的一些问题。具体来说,我不知道如何测试会话是否仍然有效。

首先,我初始化并授权连接到facebook:

Facebook facebook = new Facebook(context.getString(R.string.facebook_app_id));
facebook.authorize(...); // Works ok

然后,我想断开用户的连接:

facebook.logout(context);

但是,一旦我这样做,以下仍然会返回 true

facebook.isSessionValid();

为什么它会返回 true

我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

也许你遇到了一个旧版的bug。你的Facebook SDK是最新的吗?

根据the source,退出调用setAccessToken(null);。如果令牌为空,isSessionValid()应返回false。这是它的参考代码:

public boolean isSessionValid() {
    return (getAccessToken() != null) &&
            ((getAccessExpires() == 0) ||
                    (System.currentTimeMillis() < getAccessExpires()));
}

getter / setter也不进行任何空检查,因此logout()中的调用应具有所需的效果。

答案 1 :(得分:2)

我不确定您是如何在应用中集成Facebook的,但是您是否从共享首选项中检查访问令牌?如果你是,我会检查你是否确实在设置新的访问令牌。例如,在注销之后,您会想要写出新的访问令牌(null),以便下次它会提示用户再次登录。