5

我无法从我的网络应用程序中删除 Facebook 帖子。现在我知道Facebook 文档和其他 SO 帖子说要这样做:

You can delete objects in the graph by issuing HTTP DELETE requests to 
the object URLs, i.e,

DELETE https://graph.facebook.com/ID?access_token=... HTTP/1.1

但由于我是个菜鸟,我不完全理解用 HTTP 请求删除的简短解释。由于我尝试时它不起作用,我假设简单地重定向到上面示例中形成的 url 不会删除任何内容。这意味着我现在必须了解 Web 开发的一些新领域……HTTP 请求。

这些是如何在php中完成的?php手册也没有多大帮助。


附加信息:

我尝试了许多不同的变体:

$facebook->api($post_url, 'DELETE', array('method'=> 'delete') );

我传递的 URL 是'/post_id'. 在post_id创建后捕获并存储到数据库中。此 id 与$_GET['story_fbid']可以在任何帖子永久链接上找到的匹配。也许这不是正确的 id?我正在使用以下内容检索 id:

//post to wall
$postResult = $facebook->api($post_url, 'post', $msg_body );
//capture the id of the post
$this->fb_post_id = $postResult['id'];

当我运行上面的代码时,不会抛出任何错误。它被触摸是因为echo它运行后的诊断。

这些是我传递给 api 的不同字符串组合$post_url

/postid                  api returns true, nothing is deleted from Facebook
/userid_postid           api returns false, Error: (#100) Invalid parameter
/postid_userid           api returns false, Error: (#1705) : Selected wall post for deletion does not exist
/accesstoken_postid      api returns false, Error: (#803) Some of the aliases you requested do not exist 
/postid_accestoken       api returns false, Error: (#803) Some of the aliases you requested do not exist
4

5 回答 5

4

这应该有效:

$facebook->api("/YOUR_POST_ID","DELETE");

将返回一个布尔值,如果成功则返回 true,如果失败则返回 false。

尝试在删除时将 userid 添加到对象 ID,例如:

$facebook->api("/USER-ID_YOUR-POST-ID","DELETE");

喜欢:

$facebook->api("/12345132_5645465465454","DELETE");
//where 12345132 is fb userid and
//5645465465454 is object id --> post id
于 2012-12-24T03:24:22.070 回答
1

我已经使用具有 read_stream 和 manage_pages 权限的页面访问令牌成功地从页面中删除了帖子。

try {

        $args = array(
                  'access_token' => $page_token
                );

        $deleted = $facebook->api('/'.$post_id, 'DELETE', $args);

} catch (FacebookApiException $e) { 

            echo 'Delete review page wall error: ' . $e->getType() . ' ' . $e->getMessage();

}
于 2013-04-17T22:43:40.403 回答
0

您不能“取消发布”帖子,但这与删除帖子不同。删除帖子非常容易。

您只需要获取 COMMENT_ID 并将其发布到 Facebook。

 $post_url = 'https://graph.facebook.com/'. $COMMENT_ID .'?access_token=' .  $page_access_token . '&method=delete';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
curl_close($ch);

为了澄清这一点:如果您有权管理帖子,这在 Page API 之外有效。

于 2013-07-10T10:30:04.663 回答
0

更新的答案:

根据您的评论“这是一个页面”,我查看了Graph API 的页面详细信息。如果我正确理解详细信息,则Page Posts不支持 Delete。详细信息(事件、帖子、问题等)中的每个连接都有一个创建部分,如果连接支持删除它有一个删除描述。Posts (to feed) 部分仅提及 Create,而不是 Delete。

于 2012-12-24T03:46:09.683 回答
0

我可以使用 php SDK 5.4 从页面中删除帖子

$post = $fb->request('DELETE', '/'.$post_id,[], $page['accesstoken'])
于 2016-12-26T19:48:24.077 回答