打开阅读,Facebook Session,已经打开会话异常

时间:2015-02-12 11:09:58

标签: android facebook facebook-login android-facebook

我使用以下方法使用Facebook sdk登录Facebook。我在那里添加了一个异常的try / catch处理程序,它捕获了以下异常:

  

例外:::::::会话:尝试打开已经   开会。

正如您所见,我在打开会议之前检查会话是否已关闭。它通过它意味着它关闭,打开它是安全的。即使是异常被抓住了。

我运行调试器并停在下面标记的行并检查currentSession状态并关闭!!!!!

private Session openActiveSession(Activity activity, boolean allowLoginUI, List permissions, Session.StatusCallback callback) {
        Session currentSession = Session.getActiveSession();
        if (currentSession == null) {
            Session session = new Session.Builder(activity).build();
            Session.setActiveSession(session);
            currentSession = session;
        }

        if (!currentSession.isOpened() && (SessionState.CREATED_TOKEN_LOADED.equals(currentSession.getState()) || allowLoginUI)) {
            try {
                Session.OpenRequest openRequest = new Session.OpenRequest(activity).setPermissions(permissions).setCallback(callback);
                currentSession.openForRead(openRequest); // I stopped here..
            } catch (Exception e) {
                Log.d("Exception :::::: ", e.getMessage()); // and stopped here.
            }
            return currentSession;
        }
        return null;
    }

有任何解释吗?

这是否意味着还有另一个会话开放?如果存在,我总能得到一个活跃的会话,我不知道如何发生这种情况。我总是在所有方法中检查活动会话并使用它!

Session.getActiveSession()方法如何真正起作用?如果在之前的活动中初始化了另一个会话怎么办?这种方法应该做对吗?

1 个答案:

答案 0 :(得分:1)

我认为错误信息可以改进。它实际上应该说:“试图打开一个已经打开或已经关闭的会话。”

您应该检查currentSession.isClosed()是否为true,如果是,则创建一个新会话。

会话只能打开一次。它无法重新打开。