Facebook OAuthException: «пользователь не авторизовал приложение для выполнения этого действия» - PullRequest
7 голосов
/ 11 ноября 2010

Используя Facebook PHP SDK, я получаю следующую ошибку при попытке опубликовать обновление статуса:

Неустранимая ошибка: Uncaught OAuthException: (# 200) Пользователь не авторизованприложение для выполнения этого действия

Вот шаги, которые я предпринял:

  1. Получить код:

    https://graph.facebook.com/oauth/authorize?client_id=FB_APP_ID&redirect_uri=REDIRECT_URI
    
  2. Получить токен доступа:

    https://graph.facebook.com/oauth/access_token?client_id=FB_APP_ID&code=CODE&client_secret= FB_SECRET&redirect_uri=REDIRECT_URI
    
  3. Попытка обновления статуса:

    require_once(facebook.php);
    $fb = new Facebook(array(
        'appId' => FB_APP_ID,
        'secret' => FB_SECRET
    ));
    $post = $fb->api('me/feed', 'POST', array(
        'access_token' => ACCESS_TOKEN, 
        'message' => 'hello world!'
    ));
    

Я не вижу никаких настроекв моем приложении, которое разрешит приложению делать это, но, возможно, я что-то упустил.Есть предложения?

Ответы [ 4 ]

12 голосов
/ 11 ноября 2010

Убедитесь, что вы запрашиваете расширенное разрешение publish_stream при запросе кода (добавляется в качестве третьего параметра):

https://graph.facebook.com/oauth/authorize?client_id=' . FB_APP_ID . '&redirect_uri=' . REDIRECT_URI . '&scope=publish_stream'

Надеюсь, это поможет.

Ура!

6 голосов
/ 14 декабря 2011

У меня была такая же проблема, и этот пост действительно помог мне http://facebook.stackoverflow.com/a/8502709/965536

Единственная разница с моей проблемой заключалась в том, что я использовал PHP SDK, но по сути он работает так же. Я использовал вызов API

$permissions = $facebook->api('/me/permissions');

Затем вы можете запустить свои чеки

if(isset($permissions['data'][0]['publish_stream']) && $permissions['data'][0]['publish_stream'])

Это работает для меня, но у кого-то может быть лучший ответ. Также вы должны обернуть ваш пост публикацию поста в попытку поймать

Надеюсь, это поможет.

Спасибо

1 голос
/ 23 мая 2012

Я положил сюда еще немного информации:

Ответ Марка, приведенный выше, привел меня в правильном направлении.Но мне потребовалось еще 5 часов, чтобы найти решение.

  1. Я использую omniauth-facebook для ruby ​​на рельсах.
  2. Мне нужно установить область действия omniauth (пожалуйста,обратитесь к https://github.com/mkdynamic/omniauth-facebook)
  3. Я также готов этот пост от "Лу Чена", чтобы установить правильный запрос объема http://developers.facebook.com/blog/post/2012/04/25/streamlining-publish_stream-and-publish_actions-permissions/

Итак, вот результат для omniauth.rb:

provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'],
        :scope => 'email,user_birthday,publish_actions'
0 голосов
/ 11 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...