将读取和发布权限一起添加到ParseFacebookUtils

时间:2015-12-15 12:45:28

标签: android facebook parse-platform

以上是我的代码,但我不能一起找出用法,总是给出错误

  

无法将发布或管理权限(publish_actions)传递给读取授权请求

这是我的权限列表

private Collection<String> permissions = new ArrayList<>();
permissions.add("public_profile");
permissions.add("email");
permissions.add("user_birthday");
permissions.add("publish_actions");

这是登录请求

ParseFacebookUtils.logInWithReadPermissionsInBackground(activity, permissions, new LogInCallback() {
@Override
public void done(ParseUser parseUser, ParseException parseException) {

       if (parseUser == null) {

       } else {

       }
    }
});

我如何一起使用它?

3 个答案:

答案 0 :(得分:3)

经过漫长的时间,这是解决方案。您必须两次登录Facebook。一旦发布,其他一个是读权限。如果您需要公开个人资料数据,只需发布​​权限就足够了,但在我的情况下我需要生日,电子邮件等。所以代码如下;

这些是我的权限列表;

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

首先,我应该以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);
            }
        }
    });

在此之后,这里是我的“getPublishPermissions”方法; FacebookRequestListener是我自己的监听器,不关心/介意删除它。

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

这是所有人=)

快乐编码给每个人

答案 1 :(得分:0)

错误消息表示您不应同时请求读写权限。用户进入您的应用程序时使用读取权限登录,请在发布之前请求写入权限(publish_actions)。

使用ParseFacebookUtils.logInWithPublishPermissionsInBackground

该错误消息已经众所周知,请看一下其他一些关于它的帖子:

答案 2 :(得分:-1)

您需要执行POST请求而不是GET请求。参见:

样品:

  Bundle param = new Bundle();
param.putString("message", "picture caption");
param.putByteArray("picture", ImageBytes);
mAsyncRunner.request("me/photos", param, "POST", new SampleUploadListener());

这是您的回答link