3

我正在尝试在我的 Android 应用程序中从我的用户那里获得发布权限,并且我成功了,但是当我获得许可时,我想要一个回调来告诉我这一点。这是我的代码:

private void requestPublishPermissions(Session session) {
    Log.d("", "Requesting Publish Permissions...");
    if (session != null) {
        List<String> publishPermissions = Arrays.asList("publish_actions", "publish_stream");
        final int REAUTH_ACTIVITY_CODE = 100;
        Session.NewPermissionsRequest reauthRequest = new Session.NewPermissionsRequest(this, publishPermissions).setRequestCode(REAUTH_ACTIVITY_CODE);
        reauthRequest.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
        session.requestNewPublishPermissions(reauthRequest);
    }
}

是否session.requestNewPublishPermissions(reauthRequest);有回调或告诉我许可已被接受的东西?

感谢您的任何意见

4

3 回答 3

2

我不知道该请求的回调,但有一种简单的方法可以获得您想要的结果。

只需在onSessionStateChanged()回调中添加一个条件。如果您使用 来检查该方法中的权限session.getPermissions().contains("xxx"),您应该可以在那里签入。每当会话状态发生变化时,它都会调用该方法,我认为这包括更新权限。

于 2013-06-14T16:49:06.010 回答
0

添加StatusCallback到您的会话。

private Session.StatusCallback statusCallback = new SessionStatusCallback();

private class SessionStatusCallback implements Session.StatusCallback {
    @Override
    public void call(final Session session, SessionState state, Exception exception) {
        if (session.isOpened()) {
            switch (state) {
                case OPENED_TOKEN_UPDATED:
                    // Returns here after you request publish permissions
                    // So call your publishing actions here
                    break;
            }
        }
    }
}

实施onActivityResult()将事物粘合在一起的方法。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
于 2014-08-09T16:36:19.857 回答
0

您可以手动将回调添加到您的 FB 会话。

Session.getActiveSession().addCallback(new StatusCallback() {

            @Override
            public void call(Session session, SessionState state, Exception exception) {
                if (session.getPermissions().contains("publish_actions")) {
                    //do stuff


                }
            }
        });
于 2013-10-06T18:37:41.540 回答