以上是我的代码,但我不能一起找出用法,总是给出错误
无法将发布或管理权限(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 {
}
}
});
我如何一起使用它?
答案 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