Facebook JS SDK - Опубликовать на стене после проверки прав доступа - PullRequest
3 голосов
/ 13 сентября 2011

Я гуглю 2 дня и не могу найти ничего определенного. Все полученные результаты используют устаревший код, который больше не работает. Пожалуйста, помогите.

Мне нужна кнопка, которая при нажатии ...

  1. Проверяет наличие расширенных прав доступа
  2. Если разрешения еще не предоставлены, запросите их (user_likes, offline_access, publish_stream)
  3. Получив разрешения, опубликуйте сообщение на стене пользователя
  4. Разрешить публиковать сообщения на стене для пользователей, пока они не в сети

Может кто-нибудь помочь, пожалуйста?

1 Ответ

9 голосов
/ 13 сентября 2011

Все довольно просто. Вы можете позвонить в FB.login, чтобы получить расширенные разрешения. Затем вы можете вызвать FB.ui для публикации статуса (или FB.api для вызова / me / feed для публикации без взаимодействия с пользователем, что вызывает недовольство). Чтобы иметь возможность публиковать сообщения на стене позднее, вам необходимо сохранить access_token на вашем сервере для последующего использования.

<!DOCTYPE html>
<html>
<body>
<div id="fb-root"></div>
<a href="#" onclick="return postToWall();">Post To Wall</a>
<script src="//connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({ appId: '**appID**', status: true, cookie: true, xfbml: true, oauth: true });

  function postToWall() {  
    FB.login(function(response) {
      if (response.authResponse) {
        FB.ui({
            method: 'feed', 
            name: 'Facebook Dialogs',
            link: 'https://developers.facebook.com/docs/reference/dialogs/',
            picture: 'http://fbrell.com/f8.jpg',
            caption: 'Reference Documentation',
            description: 'Dialogs provide a simple, consistent interface for applications to interface with users.'
        },
        function(response) {
          if (response && response.post_id) {
            alert('Post was published.');
          } else {
            alert('Post was not published.');
          }
        });
      } else {
        alert('User cancelled login or did not fully authorize.');
      }
    }, {scope: 'user_likes,offline_access,publish_stream'});
    return false;
}
</script>
</body>
</html>
...