Reputation: 91
hi i'm developing android app with facebook SDK 3.0 new.
i tried to request 'publish_stream' permission after user login. so, in onSessionStateChange(), i put my code which request 'publsh_stream' permission, but it doesn't work.
here is my code:
private void onSessionStateChange(Session session, SessionState state, Exception exception) {
if (state.isOpened()) {
if (pendingPublishReauthorization && state.equals(SessionState.OPENED_TOKEN_UPDATED)) {
pendingPublishReauthorization = false;
publishFeed(userName);
}
m_pd.show();
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
String username=buildUserInfoDisplay(user);
userName=username;
saveAccount(username, "facebook");
Log.d(com.dress.folio.Constants.FACEBOOK_TAG, "login success");
//publishFeed(userName);
m_pd.dismiss();
h.postDelayed(irun, 1000);
Activity GetActivity=getActivity();
if(GetActivity != null) GetActivity.finish();
}
}
});
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions) ) {
pendingPublishReauthorization = true;
//if(state == SessionState.OPENED_TOKEN_UPDATED) {
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
//}
}
} else if (state.isClosed()) {
Log.i(com.dress.folio.Constants.FACEBOOK_TAG, "Logged out..." + exception);
}
}
at the line session.requestNewPublishPermissions(newPermissionsRequest);, compiler always say error like: an attempt was made to request new permissions for a session that has a pending request.
how can i request publish_stream right after user facekbook SSO login in my app.??
Upvotes: 3
Views: 8350
Reputation: 234
I just facing the same issue, the on onActivityResult method was overrided . So make sure calling :
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
This method should call your callback after. More info here (Section 6): https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/
Upvotes: 11