Above is my code but i cant find out together usage, always gives error
Cannot pass a publish or manage permission (publish_actions) to a request for read authorization
This is my Permission list
private Collection<String> permissions = new ArrayList<>(); permissions.add("public_profile"); permissions.add("email"); permissions.add("user_birthday"); permissions.add("publish_actions");
And this is login request
ParseFacebookUtils.logInWithReadPermissionsInBackground(activity, permissions, new LogInCallback() { @Override public void done(ParseUser parseUser, ParseException parseException) { if (parseUser == null) { } else { } } });
How can i use this together?
After long hours, this is solution. You must behave twice login to facebook. Once is publish and other one is read permissions. If you need public profile data , just publish permission is enough but in my case i need birthday, email, etc.. So code is below;
These are my permissions lists;
Collection<String> readPermissions = new ArrayList<>(); readPermissions.add("public_profile"); readPermissions.add("email"); readPermissions.add("user_birthday"); Collection<String> publishPermissions = new ArrayList<>(); publishPermissions.add("publish_actions");
Firstly, I should login with readpermission
ParseFacebookUtils.logInWithReadPermissionsInBackground(activity, readPermissions, new LogInCallback() { @Override public void done(ParseUser parseUser, ParseException parseException) { if (parseUser == null) { listener.onFailure(new UserCancelledFacebookLogin()); } else { getPublishPermissions(parseUser); } } });
After this, here my "getPublishPermissions" method; FacebookRequestListener is my own listener , don't care/mind delete it.
public void getPublishPermissions(final ParseUser parseUser) { LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject object, GraphResponse response) { // User succesfully login with all permissions // After this with these json and ParseUser , you can save your user to Parse } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,first_name,last_name,name,email,gender,birthday"); request.setParameters(parameters); request.executeAsync(); } @Override public void onCancel() { } @Override public void onError(FacebookException facebookException) { } }); LoginManager.getInstance().logInWithPublishPermissions(activity, publishPermissions); }
that's all folks =)
happy coding to everyone
The error message means you should not request read and write permissions at the same time. Login with read permissions when the User enters your App, request write permission (publish_actions) only right before you post.
Use ParseFacebookUtils.logInWithPublishPermissionsInBackground for that.
That error message is already well known, take a look at some other thread about it:
You need to do a POST request instead of a GET one. See:
Sample:
Bundle param = new Bundle(); param.putString("message", "picture caption"); param.putByteArray("picture", ImageBytes); mAsyncRunner.request("me/photos", param, "POST", new SampleUploadListener());
this is your answer check link