如何将公共状态更新发布到Facebook

时间:2013-12-05 11:56:33

标签: java android facebook

我有一种方法可以在我的应用程序中向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);
        }   
    }

2 个答案:

答案 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);