0

我正在使用以下代码允许用户登录并使用 facebook 进行身份验证,这给了我 access_token。如何将 xmpp_login 扩展权限添加到我的 access_token 请求中。

这个 Facebook页面上它说“为了使用这种机制进行连接,用户必须首先登录到您的应用程序并授予 xmpp_login 扩展权限。按照客户端流程为具有 xmpp_login 扩展权限的用户获取有效的 access_token。 "

    Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
            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)
                            .setCallback(statusCallback));
                }
            }
            updateView();

@Override
    public void onStart() {
        super.onStart();
        Session.getActiveSession().addCallback(statusCallback);
    }

    @Override
    public void onStop() {
        super.onStop();
        Session.getActiveSession().removeCallback(statusCallback);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode,
                resultCode, data);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        Session session = Session.getActiveSession();
        Session.saveSession(session, outState);
    }

    private void updateView() {
        Session session = Session.getActiveSession();
        Log.i("session log", session.toString());
        if (session.isOpened()) {
            TextView welcome = (TextView) findViewById(R.id.welcome);
            welcome.setText("Hello !");
        } else {

            doLogin();
        }
    }

    private void doLogin() {
        Session session = Session.getActiveSession();
        if (!session.isOpened() && !session.isClosed()) {
            session.openForRead(new Session.OpenRequest(this)
                    .setCallback(statusCallback));
        } else {
            Session.openActiveSession(this, true, statusCallback);
        }
    }

    private class SessionStatusCallback implements Session.StatusCallback {
        @Override
        public void call(Session session, SessionState state,
                Exception exception) {
            updateView();
        }
    }
4

2 回答 2

2

如果其他人遇到此问题,您需要在启动会话时通过替换此行来包含正确的权限:

session.openForRead(new Session.OpenRequest(this)
                            .setCallback(statusCallback));

和:

session.openForRead(new Session.OpenRequest(this).setPermissions(Arrays.asList("permission1", "permission2", "etc")).setCallback(statusCallback));

可以在此处找到权限列表

于 2013-01-27T16:57:48.780 回答
0

xmpp_login自 2015 年 4 月 30 日起已弃用。更多信息请参见下面的链接。

https://developers.facebook.com/docs/chat#platauth

于 2015-06-24T15:33:23.343 回答