facebook - API 共享计数 Facebook Graph 已弃用?
问题描述
从今天开始,当我尝试获取共享计数时,答案是:v2.9 及更高版本不推荐使用共享字段。
例如:https ://graph.facebook.com/?id=https://stackoverflow.com&fields=share
如果没有&fields=share,则会显示 json 内容,但没有 share 值。
我需要从 url 获取 Facebook 的分享数。
解决方案
API 确实发生了变化。
应该是这样的。
您需要一个访问令牌。如果您有 Facebook,请访问https://developers.facebook.com/并制作一个应用程序。
然后单击“图形 API 资源管理器”。
和“获取令牌”(Get App 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
有没有办法在不发送访问令牌的情况下接收计数?
我想知道我自己哈哈
更新:
感谢安东卢金。
是的。我不应该显示访问令牌。它必须被隐藏。我觉得非常愚蠢。
所以现在快速的回答。这在没有令牌的情况下真的有效!
我的最终(我希望是最终的)答案是这样的。
// 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 限制。如果您的网站获得大量综合浏览量,则此更新版本可能无法正常工作。
推荐阅读
- python - 如何在 Python 中沿圆形路径粘贴图像?
- javascript - Javascript:一个对象怎么可能是假的?
- excel - 将 Excel SUMPRODUCT 与多条件 COUNTIF 相结合
- angular - Angular 错误页面组件使用带有 id 的路由而没有重定向
- animation - 使用按钮交互重放 ThreeJs 动画
- android - Android MVVM 对话框视图模型
- elasticsearch - 是否可以为弹性搜索索引中的属性设置默认数据类型
- flutter - 无法使用冻结包生成 classname.g.dart 类
- jsf - inputNumber 不起作用,即允许使用字母
- powershell-2.0 - 使用 PowerShell 搜索驱动器上的所有文件夹和子文件夹