我正在使用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 ?
我做错了什么?
谢谢!
答案 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),以便下次它会提示用户再次登录。