Add read and publish permission together to ParseFacebookUtils

匿名 (未验证) 提交于 2019-12-03 00:45:01

问题:

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?

回答1:

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



回答2:

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:



回答3:

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!