最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php - Setting Custom Privacy When Posting On The User's Wall - Limit Post Visibility To Specific Users - Stack Overflow

programmeradmin1浏览0评论

I know the basics of how to post a status update, link, etc. from within a Facebook application, thanks to /, but I can't figure out whether it's possible to limit the post's visibility to a certain preset list of friends of the user authorizing the post (since the documentation on Facebook's site isn't exactly the best).

Is it possible to post to the user's wall from within my application so that it's only visible to a pre-selected list of friends? I'm mimicking the functionality of Google Plus's "Circles" feature, where the user can have various groups of friends and post to only those group lists.

I know the basics of how to post a status update, link, etc. from within a Facebook application, thanks to http://developers.facebook./docs/guides/canvas/, but I can't figure out whether it's possible to limit the post's visibility to a certain preset list of friends of the user authorizing the post (since the documentation on Facebook's site isn't exactly the best).

Is it possible to post to the user's wall from within my application so that it's only visible to a pre-selected list of friends? I'm mimicking the functionality of Google Plus's "Circles" feature, where the user can have various groups of friends and post to only those group lists.

Share Improve this question edited Aug 19, 2011 at 12:31 ifaour 38.1k12 gold badges73 silver badges79 bronze badges asked Jul 15, 2011 at 17:19 TerranRichTerranRich 1,2983 gold badges22 silver badges39 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 16 +50

This is definitely possible. Please read the Post documentation, especially the privacy parameter:

object containing the value field and optional friends, networks, allow and deny fields.

The value field may specify one of the following strings: EVERYONE, ALL_FRIENDS, NETWORKS_FRIENDS, FRIENDS_OF_FRIENDS, CUSTOM .

The friends field must be specified if value is set to CUSTOM and contain one of the following strings: EVERYONE, NETWORKS_FRIENDS (when the object can be seen by networks and friends), FRIENDS_OF_FRIENDS, ALL_FRIENDS, SOME_FRIENDS, SELF, or NO_FRIENDS (when the object can be seen by a network only).

The networks field may contain a ma-separated list of network IDs that can see the object, or 1 for all of a user's network.

The allow field must be specified when the friends value is set to SOME_FRIENDS and must specify a ma-separated list of user IDs and friend list IDs that 'can' see the post.

The deny field may be specified if the friends field is set to SOME_FRIENDS and must specify a ma-separated list of user IDs and friend list IDs that 'cannot' see the post.

Note: This privacy setting only applies to posts to the current or specified user's own Wall. Facebook ignores this setting for targeted Wall posts (when the user is writing on the Wall of a friend, Page, event, group connected to the user). Consistent with behavior on Facebook, all targeted posts are viewable by anyone who can see the target's Wall.

Privacy Policy: Any non-default privacy setting must be intentionally chosen by the user

A small example using the 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;
  }
}
?>

What I've done here:

  1. Created 4 test accounts
  2. Switched to one of them "Barbara"
  3. Went to my app and logged in (with publish_stream permission)
  4. Run the above code and the result:
  5. I've specified two friends (Ruth and Linda)
  6. Now we switch to the 4th friend (Dorothy) and check Barbara's wall and... indeed the post is not visible. :-)

Please note that you have a lot of options here, you can deny specific user, allow networks, allow Friends list...it's really up to you to customize the value, friends, allow, deny and networks fields.

ifaours answer is really nice. One "problem" is that Facebook generally encourages you to let the user choose when to post on their or others walls by showing a post dialog.

If you are using the Javascript API you can use the FB.ui method with a feed parameter like in this link http://developers.facebook./docs/reference/javascript/FB.ui/

If you are not worried with following the remended standards or have some other reason, like you don't want the user to take too many actions, I suggest you go with ifaours answer though :)

No, this is not possible. Facebook Graph API will reply with an error saying you cannot set the privacy option when posting on another user's feed.

You can either post to your own feed with limited privacy like @ifaour describes if the post is meant to be secret, and hope Facebook will consider it relevant for the frontpage newsfeed, but it will not generate a notification by email.

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论