通过id获取facebook评论
Get facebook comment by id
我有facebook评论框。当用户评论某个内容时,我想将评论存储在数据库中。所以我附加了一个带有FB.event.subscribe('comment.create', ...
的回调函数。从那里我得到了commentID
和href
,但获得确切评论的唯一方法是使用FQL,它从2011年开始被弃用,没有人知道facebook什么时候会删除它。使用Graph API,我可以获得所有评论,但无法确定哪条评论属于我们应用程序的特定用户(我们不要求任何权限,因此没有access_token;当有人评论时,我们会触发弹出表单,因此将用户详细信息与评论相匹配非常重要(这就是我们订阅comment.create
的原因))。有没有一种聪明的方法可以做到这一点,或者应该依赖于一个不推荐使用的功能?
编辑:
我正试图得到这样的评论:
FB.api(
{
method: 'fql.query',
query: "SELECT text, fromid FROM comment WHERE post_fbid = '" + resp.commentID +
"' AND object_id IN (SELECT comments_fbid FROM link_stat WHERE url='" + resp.href + "')"
},
function (data) {
var fb_id
, comment
console.log(data)
if ( data.length == 1 ) {
fb_id = data[0].fromid
comment = data[0].text
}
// ...
}
)
问题是,当在localhost上时,它返回带有一个元素的数组——我想要的注释。当我上传到我的应用程序时,它会返回不带元素的数组。也许存在权限问题。我的问题是如何在提交时获得评论的内容。什么是规范的方式?没有access_token和权限是否可能?
FQL不受反对。博客文章讨论了Rest API,具体来说,稍后它说明了FQL的变化。
要访问注释,您需要一个可以查看顶级对象的有效访问令牌。假设这只是针对网站上的评论,那么通过下面的场景5(在https://developers.facebook.com/roadmap/offline-access-removal/
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN
使用前面解释的端点和步骤,将短寿命用户访问令牌交换为长寿命访问令牌。通过使用长期用户访问令牌,查询[user ID]/accounts端点现在将为用户管理的页面提供不会过期的页面访问令牌。
然后,使用[User ID]/accounts中的页面访问令牌,您可以通过服务器端语言(例如使用PHP SDK 的PHP)对其进行硬编码(您可以创建自己的后端登录工具,以防有一天令牌无效或需要更改)
$facebook->setAccessToken('YOUR_PAGE_TOKEN');
因此,从这里您可以对加载了SDK的PHP页面进行AJAX POST
window.fbAsyncInit = function(){
FB.Event.subscribe('comment.create',
function(response) {
onCommentCreate(response.commentID);
}
);
function onCommentCreate(commentID) {
$.ajax({
type: 'POST',
url: 'createcomment.php',
data: {commentid:commentID},
success: function(result)
{
alert(result);
}
});
}
}
并从那里请求评论信息
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset( $_POST['commentid'] )) {
$commentid = $_POST['commentid'];
require 'facebook.php';
$facebook = new Facebook(array(
'appId' => 'APP_ID_HERE',
'secret' => 'APP_SECRET_HERE',
));
$facebook->setAccessToken('YOUR_PAGE_TOKEN');
$response = $facebook->api($commentid);
echo $response['from']['id'];
}
?>
参考
- https://developers.facebook.com/docs/graphapi/guides/comments/
- https://developers.facebook.com/roadmap/offline-access-removal/
- 包括用于facebook评论框的JavaScript SDK
- facebook”;添加评论“;popup获胜'不要消失
- React/Node应用程序中的Facebook评论插件.js仅在刷新时显示
- 调节多个独特的facebook评论框
- 如何嵌入Facebook页面's的评论进入我的网站
- 如何在单个页面上添加多个Facebook评论框
- Facebook评论加载与Angular Fullstack不一致
- 如何将Facebook评论添加到单页应用程序
- 令人难以置信的Facebook评论萎缩
- Facebook评论插件 - 也发布在Facebook上
- 使用Facebook API将图像和评论发布到用户墙的简单方法
- 从Facebook上获取评论
- 如何根据javascript变量动态更改Facebook评论插件URL
- 关于使用 Facebook Javascript API 的帖子评论的查询
- 是否可以通过API为特定页面添加Facebook评论,以避免需要评论插件
- 设置要使用 Facebook API 返回的评论数
- Facebook评论API - Facebook所说的“评论框背后”是什么意思
- Facebook评论小部件使页面在IE7 IE8中跳到底部
- Facebook社交插件:如何在Facebook评论框中为“查看更多”评论添加事件处理程序
- 评论Facebook页面帖子作为页面所有者与扩展令牌