Я пытаюсь получить всю ленту с моей страницы в Facebook с помощью javascript api. У кого-нибудь есть рабочий пример?
Я пытался, но у меня не получается, я могу получить фотографии из альбомов, но не могу получить каналы, и я не знаю, что я делаю неправильно.
Любой вклад действительно ценится. Спасибо!
У меня есть этот код:
Редактировать
Хорошо, у меня есть код внутри кода инициализации, как показано ниже, и он не работает, он не выполняет код, и я не получаю ошибок:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<%=facebookAppId%>', // App ID
channelUrl : 'www.mypage.se/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true
});
// get the wall - feed
var page_id = '<%=facebookPageId%>';
FB.api('/' + page_id, {fields: 'access_token'}, function(resp2) {
if(resp2.access_token) {
alert(resp2.access_token);
FB.api('/page id/feed?access_token='+resp2.access_token, function(response) {
var ul = document.getElementById('feed');
for (var i=0, l=response.data.length; i<l; i++) {
var
feed = response.data[i],
li = document.createElement('li'),
a = document.createElement('a');
a.innerHTML = feed.message;
a.href = feed.link;
li.appendChild(a);
ul.appendChild(li);
}
});
}
});
};//end window.fbAsyncInit
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
Итак, почему я могу, например: FB.api('/facebook id', function(response) { alert('Ваше имя ' + response.name); }); внутри кода инициализации, а не другого кода?
Мне все еще нужна помощь по структуре, чтобы написать обратные вызовы на странице, чтобы она выглядела хорошо, как на Facebook. Люблю выписывать "сообщение, картинку, ссылку, имя" а может еще что-то?
Как я тестирую, чтобы получить сообщения в этом примере, и некоторые из обратных вызовов отображаются как «неопределенные» на странице? Означает ли это, что сообщение не имеет значения, когда я его получаю? Если да, то как я могу не выписывать пустые значения - неопределенные?
Спасибо!
ОБНОВИТЬ:
Если я использую этот код, он читает ленту, но только если я вошел в Facebook? Я начинаю путаться, так как думаю, что приведенный выше код должен работать: я сначала запрашиваю токен доступа в первом вызове, а когда я получаю токен доступа, то использую его во втором вызове, что я делаю неправильно?
FB.api('/my userid or pageid/feed?access_token=the acces token that I get from the Graph API Explorer', {limit:5} , function(response){
if (response && response.data && response.data.length){
alert(response.message);
var ul = document.getElementById('feed');
for (var j=0; j<response.data.length; j++){
var feed = response.data[j],
li = document.createElement('li'),
a = document.createElement('a');
a.innerHTML = feed.message;
a.href = feed.link;
li.appendChild(a);
ul.appendChild(li);
}
}
});
- Я получаю пару неопределенных ответов, как я могу не написать их на странице?
- Как я могу заставить приведенный выше код работать, даже если пользователь, посещающий веб-страницу, не вошел в систему на Facebook?
- Я делаю другие звонки, которые получают фотографии альбома без проблем с отображением их на веб-странице, я не понимаю, почему это отличается?
- Если я хочу настроить это для клиента (когда все будет готово), какие шаги мне нужно предпринять? Немного запутался... :-)
- Я хотел бы получить сообщение, изображение, лайки и т. д. вместе со звонком и отобразить его, как на стене новостей, какие-либо предложения здесь?
Хорошо, наконец-то у меня все заработало :-) Я получил правильный токен доступа и теперь могу отображать каналы. Я получил правильный токен здесь: https://graph.facebook.com/oauth/access_token?client_id=myapp_id&client_secret=myapp_secret&grant_type=client_credentials Теперь я могу использовать приведенный ниже код как для получения фидов пользователей, так и фидов страниц, просто изменив page_id!
var page_id = '<%=facebookPageId%>';
var pageaccessToken='xxxxxxxxxxxxxxxxxxxxxxxxxx';
FB.api('/' + page_id + '/feed?access_token='+ pageaccessToken, {limit:5} , function(response){
if (response && response.data && response.data.length){
var ul = document.getElementById('pagefeed');
for (var j=0; j<response.data.length; j++){
var feed = response.data[j],
li = document.createElement('li'),
a = document.createElement('a');
a.innerHTML = feed.message;
a.href = feed.link;
li.appendChild(a);
ul.appendChild(li);
}
}
});
Хорошо, теперь это работает, но я получаю в ответ undefined? Что вызывает это, потому что это пустое значение, которое я получаю в ответе? Что сделать, чтобы он не отображался на странице?