在Android中恢复Facebook会话会抛出UnsupportedOperationException

时间:2013-07-10 21:29:07

标签: android facebook session

我正在尝试恢复应用程序内的用户会话。为此我打电话:

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);

并没有帮助

是否有人提示如何解决这个问题?

感谢

2 个答案:

答案 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);
        }
    }
};