Facebook OAuthException: «пользователь не разрешил приложению выполнять это действие»

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

Fatal error: 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!' )); 

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

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

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

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

Ура!

У меня была такая же проблема, и эта почта действительно помогла мне выйти на сайт 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']) 

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

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

благодаря

Я добавил здесь дополнительную информацию:

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

  1. Я использую omniauth-facebook для рубинов на рельсах.
  2. Мне нужно установить область для omniauth (см. https://github.com/mkdynamic/omniauth-facebook )
  3. Я также подготовил этот пост от «Lu Chen», чтобы установить правильный запрос области. 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' 

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