从今天起,当我尝试获取共享计数时,答案是:v2.9 及更高版本不推荐使用共享字段。
例如:https://graph.facebook.com/?id=https://stackoverflow.com&fields=share
如果没有&fields=share,则会显示 json 内容,但没有共享值。
我需要从网址获取 Facebook 的分享计数。
最佳答案
API 确实发生了变化。
应该是这样的。
您需要一个访问 token 。如果您有 Facebook,请访问 https://developers.facebook.com/并制作一个应用程序。
然后单击“Graph API Explorer”。
和“获取 token ”(获取应用程序 token )。就是这样。
如果你使用 JavaScript 进行计数,结果会是这样的。
// split('#')[0] : Remove hash params from URL
const url = encodeURIComponent( window.location.href.split('#')[0] );
$.ajax( {
url : '//graph.facebook.com/?id=' + url + '&fields=engagement&access_token=user-access-token',
dataType : 'jsonp',
timeout: 5000,
success : function( obj ) {
let count = 0;
if ( typeof obj.engagement.reaction_count !== 'undefined' ) {
count = obj.engagement.reaction_count;
}
// do something with 'count'
},
error : function() {
// do something
}
} );
还有其他计数类型,例如 comment_count 和 share_count。
参见https://developers.facebook.com/docs/graph-api/reference/v3.2/url
有没有办法在不发送访问 token 的情况下接收计数?
我自己也想知道,哈哈
<小时/>更新:
感谢安东·卢金。
是的。我不应该显示访问 token 。它必须被 Conceal 。我觉得自己很傻。
现在快速回答。这在没有 token 的情况下确实有效!
我的最终(我希望是最终的)答案是这样的。
// split('#')[0] : Remove hash params from URL
const url = encodeURIComponent( window.location.href.split('#')[0] );
$.ajax( {
url: '//graph.facebook.com/?id=' + url + '&fields=og_object{engagement}',
dataType : 'jsonp',
timeout: 5000,
success : function( obj ) {
let count = 0;
try {
count = obj.og_object.engagement.count
} catch (e) {
console.log(e)
}
// do something with 'count'
},
error : function() {
// do something
}
} );
这里的一点是,当没有人共享目标页面时,“og_object.engagement”甚至都没有定义。
我以为我会得到 0 作为返回值。但事实并非如此。
所以让我们使用 try-catch。
现在我唯一关心的是 API 限制。如果您的网站获得大量综合浏览量,此更新版本可能无法正常工作。
关于facebook - API 分享计数 Facebook Graph 已弃用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55761103/