【问题标题】:Setting Custom Privacy When Posting On The User's Wall - Limit Post Visibility To Specific Users在用户墙上发帖时设置自定义隐私 - 将帖子可见性限制为特定用户
【发布时间】:2011-10-06 08:27:31
【问题描述】:

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

是否可以从我的应用程序中发布到用户的墙上,以便仅对预先选择的朋友列表可见?我在模仿 Google Plus 的“圈子”功能,用户可以拥有不同的朋友群组,并只在这些群组列表中发帖。

【问题讨论】:

    标签: php javascript facebook facebook-graph-api


    【解决方案1】:

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

    包含 value 字段和可选 friendsnetworks 的对象, allowdeny 字段。

    value 字段可以指定以下字符串之一:EVERYONEALL_FRIENDSNETWORKS_FRIENDSFRIENDS_OF_FRIENDSCUSTOM

    如果 value 设置为 CUSTOM,则必须指定 friends 字段并且 包含以下字符串之一:EVERYONENETWORKS_FRIENDS(当 该对象可以被网络和朋友看到),FRIENDS_OF_FRIENDSALL_FRIENDSSOME_FRIENDSSELFNO_FRIENDS(当对象可以 只有网络才能看到)。

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

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

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

    注意:此隐私设置仅适用于当前或 指定用户自己的墙。 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. 运行上面的代码,结果:
    5. 我指定了两个朋友(Ruth 和 Linda)
    6. 现在我们切换到第四位朋友 (Dorothy) 并检查 Barbara 的墙,然后……确实看不到帖子。 :-)

    请注意这里有很多选项,您可以拒绝特定用户、允许网络、允许好友列表...完全由您来自定义valuefriendsallow、@ 987654357@ 和 networks 字段。

    【讨论】:

    • 你在 /me/feed 上发帖,而不是 /XXXXXXX/feed
    • @NicolasGrasset:这就是 OP 的意思。在用户墙上发帖(应用程序代表用户发帖)- 用户在他的墙上发帖。
    • @NicolasGrasset:没关系,顺便说一句,你提到的内容在上面 Facebook 的引用中有所描述。
    • 这正是我正在寻找的答案。非常感谢,ifaour!
    • TerranRich:不客气!请阅读我对@Kasper 答案的评论!
    【解决方案2】:

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

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

    如果您不担心遵循推荐的标准或有其他原因,例如您不希望用户采取太多操作,我建议您使用 ifaours 答案:)

    【讨论】:

    • 显然,开发人员可以使用的最佳操作不是“以编程方式”设置隐私,而是有一个简单的朋友、朋友列表和网络选择器,以便用户可以选择隐私和开发人员(他的代码) 将采取相应的行动。
    【解决方案3】:

    不,这是不可能的。Facebook Graph API 将回复一条错误消息,指出您在其他用户的供稿上发帖时无法设置隐私选项。

    您可以在隐私受限的情况下发布到您自己的信息流,例如 @ifaour 描述的帖子是否是保密的,并希望 Facebook 将其视为与首页新闻源相关,但不会通过电子邮件生成通知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多