API действительно изменился.
Должно быть так.
https://graph.facebook.com/?id=https://stackoverflow.com&fields=engagement&access_token=user-access-token
Вам нужен токен доступа.Если у вас есть Facebook, перейдите на https://developers.facebook.com/ и создайте приложение.
Graph API Explorer
Затем нажмите «Graph API Explorer».
Получить токен
и «Получить токен» (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
Есть ли способ получить счет без отправки токена доступа?
Я хочу знать, что сам LOL
ОБНОВЛЕНИЕ:
Спасибо Антону Лукину.
Да.Я не должен показывать токен доступа.Это должно быть скрыто.Я чувствую себя очень глупо.
Так что теперь быстрый ответ.Это действительно работает без токена!
Мой окончательный (надеюсь, окончательный) ответ будет таким:
// 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.Если ваш сайт получает много просмотров страниц, эта обновленная версия может не работать ..