2

我可以在群组/页面和用户墙上发帖,但我不希望我的应用在所选墙上发帖时显示错误,如果所选墙不允许发帖,那么有什么方法可以知道我们是否可以发帖在目标墙上?

注意:我发现了两个类似的问题,但它们并不完全符合我想要的

1 应用程序可以发布在用户的墙上

2 如何使用php sdk检查朋友是否允许我在他的墙上发帖

在采取任何负面行动之前,请在评论中讨论。

谢谢。

4

2 回答 2

1

AFAIK,没有办法准确地检查你想要的方式,因为隐私会有所不同,正如你已经说过的那样。唯一可以查询的隐私设置是OPEN, CLOSED, or SECRETgroup 可以通过调用graph api来完成:

`http://graph.facebook.com/$Group_id`

这将返回具有字段的 json 数据,该字段privacy将是OPEN, CLOSED, or SECRET.

但除此之外,您还有群组设置,您可以将发帖限制为仅限群组管理员。并且该权限不能被检查

所以我认为你必须做的是检查返回的值,即$response 发布后。如果未授予权限,则返回的数据如下所示:

{
   "error": {
      "type": "Exception",
      "message": "You do not have permission to post in this group."
   }
}

因此,您可以检查是否$response有“错误”字段,并相应地通知用户。有点像这样:if(isset($response['error']))

如果您还没有,请查看代表的 fql 表以获取更多信息。

于 2012-04-08T09:20:19.577 回答
1

您的意思是如何检查用户是否已授予在他们的墙上发帖的权限?

try {
    // Get the permissions this user has
    $call = $this->facebook->api("/me/permissions");

    // If they have the permission we require ('publish_stream')
    if($call['data'][0]['publish_actions']){
        try{
            // Do your magic here...
            // Also include your access token in the array
            $params = array('message'=> 'hello world');
            $call = $this->facebook->api('/me/feed','POST',$params);

        }catch(FacebookApiException $e) {
            $result = $e->getResult(); // prob no permissions
        }
    }
} catch(FacebookApiException $e) {
    $result = $e->getResult();
}

所以基本上,首先检查用户是否具有特定操作的权限,然后如果他们这样做,$call[data][0]['publish_action']将设置为1 (int).

示例输出$call = $this->facebook->api("/me/permissions");

[installed] => (int) 1
[email] => (int) 1
[publish_actions] => (int) 1

我通过 facebook 从用户那里获得了上述权限。

于 2012-04-08T11:18:29.507 回答