我有一种方法可以在我的应用程序中向Facebook发布状态更新,如下所示。 一切正常,但我希望能够改变状态的隐私设置,因为它现在总是只发布给我的朋友,我想把它发布给公众。
我应该如何做到这一点,或者API中存在一些限制?
private void postToFacebook(String message)
{
if(Session.getActiveSession().isOpened())
{
Session.NewPermissionsRequest newPermissionRequest = new Session.NewPermissionsRequest((Activity) this, Arrays.asList("publish_actions"));
Session.getActiveSession().requestNewPublishPermissions(newPermissionRequest);
Request request = Request.newStatusUpdateRequest(Session.getActiveSession(), message, new Callback()
{
@Override
public void onCompleted(Response response)
{
FacebookRequestError fer = response.getError();
if(fer != null)
{
Log.d("FBSEND", fer.getErrorMessage());
}
else
{
Toast.makeText(getApplicationContext(), "Posted Successfully!", Toast.LENGTH_SHORT).show();
}
}
});
Request.executeBatchAsync(request);
}
}
答案 0 :(得分:0)
要发布公开信息,您应该发送隐私参数以及请求。
Request req = new Request();
Bundle b = new Bundle();
b.putString("privacy","{'value':'EVERYONE'}");
req.setParameters(b);
req.newStatusUpdateRequest(...
希望这会奏效。参考:https://developers.facebook.com/docs/reference/api/privacy-parameter/
P.S:我没有尝试过这段代码。
答案 1 :(得分:0)
这里有几点需要考虑。
首先,大多数用户不喜欢公开发布,如果您的应用要求公开权限,他们更有可能拒绝您的权限请求。
其次,用户可以随时更改您的应用发布的隐私(无需应用知道),因此即使您请求公共权限,它也可能是将来的任何其他内容(并且它将超出您的控制)。
最后,当您要求发布权限时,您只能要求一次隐私权限。在NewPermissionsRequest中,您可以调用setDefaultAudience,例如:
newPermissionRequest.setDefaultAudience(SessionDefaultAudience.EVERYONE);