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

Ter*_*ich 4 javascript php facebook facebook-graph-api

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

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

ifa*_*our 16

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

包含对象value字段和可选的friends,networks, allowdeny字段.

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

friends字段必须如果指定value被设定为CUSTOM:与包含以下字符串之一EVERYONE,NETWORKS_FRIENDS(当目的可以通过网络和朋友可看出), ,FRIENDS_OF_FRIENDS, ALL_FRIENDS,SOME_FRIENDS,SELFNO_FRIENDS(当对象只能由一个网络中可以看出).

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

allow必须在friends值设置SOME_FRIENDS为时指定该字段, 并且必须指定以逗号分隔的用户ID列表和"可以"查看帖子的好友列表ID.

deny如果该字段可以指定friends字段设置为 SOME_FRIENDS必须指定一个逗号分隔的用户ID和朋友列表ID是"不能"看到帖子的列表.

注意:此隐私设置仅适用于当前或指定用户自己的Wall的帖子.Facebook忽略了针对目标墙帖的这种设置(当用户在朋友的墙上写作时,页面,事件,连接到用户的组).与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;
  }
}
?>
Run Code Online (Sandbox Code Playgroud)

我在这里做了什么:

  1. 创建了4个测试帐户
  2. 切换到其中一个"芭芭拉"
  3. 去了我的应用程序并登录(经publish_stream许可)
  4. 运行上面的代码和结果: 在此输入图像描述
  5. 我指定了两个朋友(露丝和琳达)
  6. 现在我们切换到第4个朋友(多萝西)并检查芭芭拉的墙壁......确实帖子不可见.:-)

请注意,你有很多选择这里,你可以拒绝特定用户,允许网络,让好友列表...它是真正由你来定制value,friends,allow,denynetworks领域.