在用户墙上发布时设置自定义隐私 - 限制特定用户的发布可见性

时间:2011-07-15 17:19:53

标签: php javascript facebook facebook-graph-api

由于http://developers.facebook.com/docs/guides/canvas/,我知道如何在Facebook应用程序中发布状态更新,链接等的基础知识,但我无法弄清楚是否可以将帖子的可见性限制为授权帖子的用户的某些预设朋友列表(因为Facebook网站上的文档不是最好的)。

是否可以从我的应用程序中发布到用户的墙上,以便只有预先选择的朋友列表才能看到它?我正在模仿Google Plus的“圈子”功能,用户可以拥有各种朋友群,只发布到这些群组列表。

3 个答案:

答案 0 :(得分:16)

这绝对是可能的。请阅读Post文档,尤其是privacy参数:

  

包含 value 字段和可选 friends networks 的对象,    allow deny 字段。

     

value 字段可以指定以下字符串之一: EVERYONE ,    ALL_FRIENDS NETWORKS_FRIENDS FRIENDS_OF_FRIENDS CUSTOM

     

如果 friends 设置为 value ,则必须指定 CUSTOM 字段   包含以下字符串之一: EVERYONE NETWORKS_FRIENDS (当   网络和朋友可以看到该对象, FRIENDS_OF_FRIENDS ,    ALL_FRIENDS SOME_FRIENDS SELF NO_FRIENDS (当对象可以   仅由网络看到。)

     

networks 字段可能包含以逗号分隔的网络ID列表   可以看到对象,或者1可以看到用户的所有网络。

     

allow 值设置为时,必须指定 friends 字段    SOME_FRIENDS 并且必须指定以逗号分隔的用户ID和列表   朋友列表ID'可以“看到帖子。

     

如果 deny 字段设置为 friends 字段,则可以指定    SOME_FRIENDS 并且必须指定以逗号分隔的用户ID和列表   朋友列表ID'无法'看到帖子。

     

注意:此隐私设置仅适用于当前或的帖子   指定用户自己的Wall。 Facebook忽略了针对此目标的此设置   墙上的帖子(当用户在朋友的墙上写字时,Page,   事件,组连接到用户)。与行为一致   Facebook,所有目标帖子都可以被任何可以看到的人看到   目标的墙。

     

隐私政策:任何非默认隐私设置都必须是故意的   由用户选择

使用PHP-SDK的一个小例子:

<?php
require '../src/311/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'APP_ID',
  'secret' => 'APP_SECRET',
));

$user = $facebook->getUser();

if ($user) {
  try {
    $privacy = array(
        'value' => 'CUSTOM',
        'friends' => 'SOME_FRIENDS',
        'allow' => 'XXXXXXX,YYYYYYY' // Change this to your friends ids
    );
    $params = array();
    $params['privacy'] = json_encode($privacy);
    $params['message'] = "Special for TWO friends";
    $post_id = $facebook->api('/me/feed', 'POST', $params);
    var_dump($post_id);
  } catch (FacebookApiException $e) {
    print_r($e);
    $user = null;
  }
}
?>

我在这里做了什么:

  1. 创建了4个测试帐户
  2. 切换到其中一个“芭芭拉”
  3. 访问我的应用并登录(使用publish_stream权限)
  4. 运行上面的代码和结果: enter image description here
  5. 我指定了两个朋友(露丝和琳达)
  6. 现在我们切换到第4位朋友(多萝西)并检查芭芭拉的墙壁......确实帖子不可见。 : - )
  7. 请注意,您在此处有很多选项,您可以拒绝特定用户,允许网络,允许好友列表...这取决于您自定义valuefriends,{ {1}},allowdeny字段。

答案 1 :(得分:0)

ifaours回答非常好。一个“问题”是Facebook通常鼓励用户通过显示帖子对话框让用户选择何时在他们或其他墙上发布。

如果您使用的是Javascript API,则可以将FB.ui方法与feed参数一起使用,例如此链接http://developers.facebook.com/docs/reference/javascript/FB.ui/

如果您不担心遵循建议的标准或有其他原因,例如您不希望用户采取太多行动,我建议您尽量回答ifaours:)

答案 2 :(得分:0)

不,这是不可能的。 Facebook Graph API会回复时收到错误消息,说明在其他用户的Feed上发布时无法设置隐私选项。

您可以使用有限的隐私发布到自己的Feed,如@ifaour描述该帖子是否属于秘密,并希望Facebook认为它与首页新闻源相关,但不会通过电子邮件生成通知。< / p>