0

次のコードを使用して、ユーザーが Facebook にログインして認証できるようにしています。これにより、access_token が得られます。access_token のリクエストに xmpp_login 拡張アクセス許可を追加するにはどうすればよいですか。

この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 に答える