Reputation: 2799
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
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
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
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