Facebook应用不再请求正确的权限

时间:2013-10-12 21:32:46

标签: android facebook facebook-android-sdk

我构建了一个使用XMPP连接到Facebook聊天的Facebook应用程序。它运作得很好。但最近在我试图授权它的帐户上没有请求正确的权限,阻止我的应用程序工作。 Bellow是我的应用从facebook获得的权限的两个屏幕截图。一个清楚地显示出比另一个更多的许可。我的请求权限代码没有改变:

Session session = Session.getActiveSession();

        if (session == null) {
            if (savedInstanceState != null) {
                session = Session.restoreSession(this, null, statusCallback,
                        savedInstanceState);
            }
            if (session == null) {
                session = new Session(this);
            }
            Session.setActiveSession(session);
            if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
                session.openForRead(new Session.OpenRequest(this)
                        .setPermissions(
                                Arrays.asList("xmpp_login",
                                        "user_online_presence",
                                        "friends_online_presence",
                                        "read_mailbox", "read_friendlists"))
                        .setCallback(statusCallback));
            }
        }

更正权限: enter image description here

不正确:

enter image description here

1 个答案:

答案 0 :(得分:2)

尝试解决什么问题(阅读文档) - 但对于演出来说太长了。

差异似乎是第一个用户之前已经对应用程序进行了身份验证:您可以将“最后访问权限”称为“基本信息”。在这种情况下,用户可能具有“SessionState.CREATED_TOKEN_LOADED”,但其他用户可能具有“SessionState.CREATED”,因为之前没有缓存的令牌。如果在调用“openForRead”之前检查这两种状态会发生什么?如果这个失败,你在其他地方还有另一个“开放”吗?另一个人可能不会要求权限。

基于docs的另一个评论是你调用“Session.setActiveSession(session);”你不能用尚未打开的会话来调用它。所以你可能应该把它移到“openForRead”调用之后,否则它可能会再次抛出异常,另一个open()请求会扫除后果。