PaperThick
PaperThick

Reputation: 2799

Callback for Facebook requestNewPublishPermissions - Android

I'm trying to get publish permissions from my users in my Android app and I'm succeeding but when I get the permission I want a callback to tell me just that. Here is my code:

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);
    }
}

Does the session.requestNewPublishPermissions(reauthRequest); have a callback or something that tells me that the permission was accepted?

Thanks for any input

Upvotes: 3

Views: 3260

Answers (3)

Ε Г И І И О
Ε Г И І И О

Reputation: 12341

Add the StatusCallback to your session.

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;
            }
        }
    }
}

Implement onActivityResult() which glues things together.

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

Upvotes: 0

Mark Buikema
Mark Buikema

Reputation: 2540

You can manually add callbacks to your FB session.

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

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


                }
            }
        });

Upvotes: 0

Wenger
Wenger

Reputation: 989

I don't know of a callback for that request, but there's an easy way to get your desired result.

Just add a conditional to the onSessionStateChanged() callback. If you check for the permission in that method by using session.getPermissions().contains("xxx"), you should be able to check in there. Any time the session state changes, it'll call that method, and I think that includes updating permissions.

Upvotes: 2

Related Questions