Graph API поддерживает JSONP, поэтому вы можете использовать callback
аргумент для вызова вашей функции, которая установит желаемую переменную:
var likes;
function setLikes(data){
likes = data.shares;
console.log('Got results', data.id, likes);
}
var s = document.createElement('script');
s.src = 'https://graph.facebook.com/?id=http://www.stackoverflow.com&callback=setLikes';
document.getElementsByTagName('head')[0].appendChild(s);
Примечание: Я изменилids
до id
, что упрощает вывод, если вам нужны детали только для одного объекта OpenGraph.Если вам нужно получить информацию для многих объектов, вам нужно изменить битовый метод setLikes
для циклического переключения ключей или получить информацию по нужному ключу data['http://www.stackoverflow.com'].shares
Обновление:
Из-за асинхронного характера предыдущего вызова вам придется ждать с кодом, который зависит от likes
, до тех пор, пока не будет вызван getLikes
.Это может быть сделано разными способами, обратитесь к следующему коду, чтобы получить некоторую подсказку ...
var likes; // This is a variable scoped outside of setLikes!
function setLikes(data){
// Once this is set likes will be available everywhere in the scope it defined!
likes = data.shares;
// You may run code that depends on likes variable here
call_function_that_depends_on_likes();
// You can also fire an event that your code subscribed to
// and pass likes as an argument...
// If you using Facebook JS-SDK
FB.Event.fire('my-custom-event', likes);
// If you using jQuery
$(document).trigger('my-custom-event', likes)
}
// If you using Facebook JS-SDK
FB.Event.subscribe('my-custom-event', function(likes){
// Run your code from here
});
// If you using jQuery
$(document).on('my-custom-event', function(evt, likes){
// Run your code from here
});
Возможно, вы уже сделали нечто подобное, если использовали domready
или document.load
.