我正在尝试恢复应用程序内的用户会话。为此我打电话:
Session.openActiveSessionFromCache(ctx);
大部分时间它工作正常。但有时我会得到:
java.lang.UnsupportedOperationException: Session: an attempt was made to open an already opened session.
编辑:
我添加了这张支票:
Session activeSession = Session.getActiveSession();
if (activeSession!=null && activeSession.isOpened()){
return activeSession;
}
activeSession = Session.openActiveSessionFromCache(ctx);
并没有帮助
是否有人提示如何解决这个问题?
感谢
答案 0 :(得分:2)
作为
openActiveSessionFromCache
的工作原理如下:“创建一个新的Session,如果有一个令牌缓存,打开Session并使其在没有任何用户交互的情况下激活”。
因此,在调用openActiveSessionFromCache之前检查会话是否打开应该会更好。你可以用
isOpened()
答案 1 :(得分:1)
当facebook会话未处于打开状态时使用此行代码。
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (!state.isClosed()) {
Session.openActiveSessionFromCache(ctx);
}
}
};