Проблема с вызовом Facebook Open Graph API ... нужен активный токен доступа? - PullRequest
0 голосов
/ 22 апреля 2011

Я использую API открытого графика Facebook вместе с SDK JavaScript на моем сайте. Моя цель - чтобы пользователь подключился к моему сайту, а затем, выполнив определенные действия на моем сайте, опубликовал сообщение в потоке пользователей Facebook. У меня есть функция подключения Facebook работает просто отлично. Во время подключения я запрашиваю разрешения на электронную почту, publish_stream, offline_access. Я думаю, что это все, что мне нужно для того, что я пытаюсь сделать. Теперь, когда пользователь подключается через Facebook, я получаю и получаю токен доступа и секретный ключ Facebook, хотя я не знаю, что с ними делать.

Согласно скудной документации Facebook для JavaScript SDK ... чтобы сделать то, что я пытаюсь сделать, нужно использовать следующий код:

var body = 'Reading Connect JS documentation';
FB.api('/me/feed', 'post', { message: body }, function(response) {
  if (!response || response.error) {
    alert('Error occured');
  } else {
    alert('Post ID: ' + response.id);
  }
});

Я делаю это в качестве теста, и вместо предупреждения ответа я записываю ответ JSON и записываю его на консоль. Достаточно сказать, что публикация потока не удалась, и ответ такой:

{"error":{"type":"OAuthException","message":"An active access token must be used to query information about the current user."}}

Если пользователь «подключен» к моему сайту через facebook connect и принял все указанные мной разрешения, у меня нет действительного токена доступа? Является ли токен доступа другим параметром, который я должен передать вызову API?

Ответы [ 2 ]

1 голос
/ 23 апреля 2011

Убедитесь, что у вас есть все это на странице:

<BODY>
    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <script type="text/javascript">
    FB.init({
      appId  : APP_ID, // the app ID you get when you register your app in http://www.facebook.com/developers/
      status : true, // check login status
      cookie : true, // enable cookies to allow the server to access the session
      xfbml  : true  // parse XFBML
    });

    if (FB.getSession() != null) {
      var body = 'Reading Connect JS documentation';
      FB.api('/me/feed', 'post', { message: body }, function(response) {
        if (!response || response.error) {
          alert('Error occured');
        } else {
          alert('Post ID: ' + response.id);
        }
      });
    }
    </script>
1 голос
/ 23 апреля 2011

Приведенный выше код работал для меня с разрешением publish_stream. Убедитесь, что код не запущен до того, как javascript api получил токен доступа. Run:

console.log(FB.getSession()) 

прямо над вызовом FB.api, чтобы убедиться, что у вас есть access_token.

...