отобразить мои каналы из Facebook на моей веб-странице с javascript api? - PullRequest
1 голос
/ 12 марта 2012

Я пытаюсь получить всю ленту новостей со своей страницы в Фейсбуке, а не с помощью 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>
  1. Так почему я могу иметь, например: FB.api ('/ facebook id', функция (ответ) { alert («Ваше имя» + response.name); }); внутри кода инициализации, а не другого кода?

  2. Мне все еще нужна некоторая структурная помощь, чтобы написать обратные вызовы на странице, чтобы она выглядела хорошо, как на Facebook. Мне нравится писать "сообщение, изображение, ссылку, имя" и, может быть, что-то еще?

  3. Как я тестирую, чтобы получить сообщения в этом примере, и некоторые обратные вызовы отображаются как «неопределенные» на странице? Означает ли это, что сообщение не имеет значения, когда я его получаю? Если так, как я не могу записать пустые значения - неопределенные?

Спасибо!

UPDATE:

Если я использую этот код, то он читает ленту новостей, но только если я вошел в 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);
          }
        }
      });
  1. Я получил пару неопределенных ответов, как я могу не написать их на странице?
  2. Как заставить работать приведенный выше код, даже если пользователь, посещающий веб-страницу, не вошел в Facebook?
  3. Я делаю другие звонки, чтобы получить фотографии альбома без проблем, отображая их на веб-странице, я не понимаю, почему это отличается?
  4. Если я хочу настроить это для клиента (когда он закончится), какие шаги мне нужно предпринять? Я немного запутался ...: -)
  5. Я хотел бы получить сообщение, изображение, лайки и т. Д. С помощью звонка и отобразить его, как он есть на стенке, какие-либо предложения здесь?

Хорошо, наконец-то все заработало :-) Я получил правильный токен доступа и теперь могу отображать каналы. Я получил правильный токен здесь: https://graph.facebook.com/oauth/access_token?client_id=myapp_id&client_secret=myapp_secret&grant_type=client_credentials И теперь я могу использовать приведенный ниже код как для получения пользовательских каналов, так и для страниц, просто меняя идентификатор страницы!

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);
          }
        }
      });

Хорошо, теперь это работает, но я получил неопределенное в ответе? Что вызывает это, потому что это пустое значение, которое я получаю в ответе? Что я могу сделать, чтобы он не отображался на странице?

1 Ответ

1 голос
/ 13 марта 2012

Я не понимаю, что вы пытаетесь сделать, но у меня такое ощущение, что вы пошли по неверному пути ..

Давайте начнем с того, что вам не нужны особыеразрешение или токен доступа к странице для запроса фида страниц, он общедоступен и поэтому все, что вам нужно ( в кавычках из документов ), это: "любой действительный access_token или user access_token"Это означает, что если пользователь авторизовал ваше приложение, вы приобрели для него токен доступа и можете получить любой фид страниц.Например, попробуйте фид страниц southpark в Graph API Explorer .

Другая проблема заключается в том, что вы запрашиваете у пользователя разрешение "manage_pages", а затем запрашиваете у API api маркер доступа ваше приложение не будет работать.Когда пользователь предоставляет ваше приложение для управления своими страницами, это именно то, что вы получаете, разрешения на его страниц, и поэтому этот запрос, например: / southpark? Feilds = access_token не будетполучить маркер, поскольку вы не являетесь администратором этой страницы (даже если вы предоставляете приложению разрешение «manage_pages»).

Последнее, что нужно сделать, - это window.onload ,что в вашей ситуации просто не решает проблему.Вы не хотите выполнять этот код, когда окно загружено, но когда загружен и запущен SDK facebook.Вот почему Facebook советует вам использовать событие fbAsyncInit .Код, который вы имели до window.onload , является правильной формой, что именно вы имеете в виду, когда говорите «это не сработало»?Вы получили какие-либо ошибки?Он не был выполнен?


Редактировать

Из того, что я понимаю, вы хотите отобразить содержимое фида facebook Page на вашем сайте.

Как я уже говорил вам, все, что вам нужно для получения фида страницы, это активный токен доступа ("любой действительный access_token или user access_token").

Если вы следуете Аутентификация doc, в разделе «Вход в приложение» вы увидите, что вы можете выдать токен доступа для вашего приложения Facebook.С этим токеном вы можете получить фид ЛЮБОЙ СТРАНИЦЫ на стороне сервера.

...