发布到 Facebook Graph API 时指定隐私

Posted

技术标签:

【中文标题】发布到 Facebook Graph API 时指定隐私【英文标题】:Specify privacy when POSTing to Facebook Graph API 【发布时间】:2010-08-25 07:04:09 【问题描述】:

我想在 Facebook 上自动发布笔记,并将它们定位到群组中的单个成员。我所说的目标是指只有特定的 Facebook 用户才能阅读该注释。

有没有办法用图形 API 做到这一点?我在旧的 REST API 中看到 steam.publish 方法上有一个“隐私”参数(参见http://developers.facebook.com/docs/reference/rest/stream.publish)。图 API 中是否有等价物?

【问题讨论】:

我也打算知道答案。天哪,你在 8 月 25 日问了这个问题。 我在链接developers.facebook.com/docs/reference/api/post看到我们不能更改用户的隐私设置... :( 【参考方案1】:

这就是答案。

只需在 JSONObject 格式的 Bundle 中包含“隐私”,包括值“SELF”、“ALL_FRIENDS”或“EVERYONE”。

这里使用的是android SDK 2.0,现在3.0已经可以用了,不过graph api的使用方法是一样的,遇到问题可以留言:)。

public String PostWall(String Message,int Level)
    /***********************************************************
        * level 0 ==>only me
        * level 1==>friend only
        * level 2==>public
        * level >2 ==>error
    ***********************************************************/
    Bundle params = new Bundle();
    params.putString("message", Message);
    JSONObject privacy = new JSONObject();
    try 
        switch (Level)
            case 0: 
                privacy.put("value", "SELF");
                break;
            case 1: 
                privacy.put("value", "ALL_FRIENDS");
                break;
            case 2: 
                privacy.put("value", "EVERYONE");
                break;
        
     catch (JSONException e1) 
    
    params.putString("privacy", privacy.toString());
    //Step 2 Request
    String resp= "";
    try 
        resp = fb.request("me/feed", params, "POST");
     catch (FileNotFoundException e) 
     catch (MalformedURLException e) 
     catch (IOException e) 
    
    try
        resp = new JSONObject(resp).getString("id");
        if(enableLog)
            Log.d(LOGTAG,"*****POSTWALL END*****");
            Log.d(LOGTAG,"RETURN "+resp);
        
        return resp;
    catch(JSONException e1)
    

;

【讨论】:

【参考方案2】:

你可以使用SELF

phpfacebook api 示例:

$privacy = array(
        'value' => 'SELF' //private
    );

$publish = $facebook->post('/me/videos',
        array('access_token' => $page_token,
        'title'=> $title,
        'privacy'=> $privacy,
        'source' => $facebook->videoToUpload($fn),
        'description' => $desc
        ));

包含 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。


在以下链接中搜索隐私以查看所有选项:

https://developers.facebook.com/docs/graph-api/reference/v2.6/post

【讨论】:

【参考方案3】:

是的,有:

http://developers.facebook.com/docs/reference/api/post

您可以修改一个名为隐私的字段。

希望对您有所帮助, -Roozbeh

【讨论】:

无法理解如何更改隐私 ????该页面中的说明说“任何非默认隐私设置都必须由用户有意选择。除非用户主动指定他们想要此非默认设置,否则您不得设置自定义隐私设置。”【参考方案4】:

http://developers.facebook.com/docs/reference/api/post

没有说明如何指定隐私 正确的方式

对于各种选项 CUSTOM、FRIENDS、NETWORK_FRIENDS

【讨论】:

你是对的,它说的是返回类型对象和所有,并且在它下面还提到我们不能更改用户的隐私政策。【参考方案5】:

如果您从应用发布笔记,您可以设置默认活动隐私,如下所示:

可以在您验证自己的应用程序时设置,也可以在:account settings - > applications 中设置。

【讨论】:

以上是关于发布到 Facebook Graph API 时指定隐私的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 和 Graph API 发布到 Facebook,权限问题

Facebook Graph API v10 图像上传到页面提要

无法使用 Graph API 将事件导出到 Facebook

facebook graph api - 发布多张照片

通过 Graph API SDK .NET 将图像发布到 Facebook 页面的问题

将照片上传到 facebook 群组 Graph API