Почему публикация на странице facebook приводит к тому, что "пользователь не авторизовал приложение"

Я прочитал документы fb и написал код для публикации сообщения на "странице" в Facebook, однако получаю сообщение об ошибке, которое не ожидаю увидеть:

(#200) The user hasn't authorized the application to perform this action

Вот что я сделал:

  • Я установил приложение на Facebook, которое предоставляет мой APP_ID а такжеAPP_SECRET,
  • Я настроил тестовую "страничку" в фейсбуке. Давайте обратимся к его fb id как PAGE_ID,
  • Использовал OAuth, чтобы получить USER_ACCESS_TOKEN с областью "publish_actions, manage_pages" для пользователя. Я принял разрешения, запрошенные моим приложением при перенаправлении на страницу авторизации в Facebook.
  • Я получил на https://graph.facebook.com/me/accounts с использованием USER_ACCESS_TOKENи я получаю список страниц, которые я администрирую, включая ту, на которую я хочу опубликовать.

Этот блок данных для моей страницы выглядит так:

{
  "data": [
    {
      "category": "Community", 
      "name": "My Generic Test Page", 
      "access_token": PAGE_ACCESS_TOKEN, 
      "id": PAGE_ID, 
      "perms": [
        "ADMINISTER", 
        "EDIT_PROFILE", 
        "CREATE_CONTENT", 
        "MODERATE_CONTENT", 
        "CREATE_ADS", 
        "BASIC_ADMIN"
      ]
    }, 
    ....
  ]
}

Тогда я использую PAGE_ACCESS_TOKEN чтобы разместить сообщение на странице:

  • Я сделал пост на https://graph.facebook.com/PAGE_ID/feed с полем message равно This is a test post.

Facebook возвращает:

{
  "error": {
    "message": "(#200) The user hasn't authorized the application to perform this action", 
    "type": "OAuthException", 
    "code": 200
  }
}

Используя токен отладчик, я могу подтвердить, что мой PAGE_ACCESS_TOKEN действителен и имеет области действия: manage_pages а также publish_actions,

Где мне не хватает авторизации приложения? Нужны ли дополнительные области? Я что-то пропустил, щелкнув что-то на экране авторизации facebook? Есть ли настройка в приложении, которое мне не хватает? После нескольких дней отладки, я должен быть слепым к проблеме.:-|

4 ответа

Решение

status_update больше не используется. Чтобы опубликовать на страницах, мне пришлось использовать оба manage_pages а также publish_pages,

Вы должны добавить разрешение с именем status_update, например

https://www.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=145634995501895&redirect_uri=https%3A%2F%2Fwww.facebook.com%2Fconnect%2Flogin_success.html%3Fdisplay%3Dpage&response_type=token&fbconnect=1&perms=status_update&from_login=1&m_sess=1&rcount=1

введите описание изображения здесь

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

Если вы хотите публиковать сообщения в качестве администратора страницы, вам, например, требуются права доступа manage_pages и status_update.

https://www.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=145634995501895&redirect_uri=https%3A%2F%2Fwww.facebook.com%2Fconnect%2Flogin_success.html%3Fdisplay%3Dpage&response_type=token&fbconnect=1&perms=manage_pages%2Cstatus_update&from_login=1&m_sess=1&rcount=1

введите описание изображения здесь

ура

Что ж, похоже, это распространенная ошибка, которую большинство из нас совершают, пытаясь сделать что-то в социальных сетях. Прежде чем пытаться создать действие с открытым графиком, вам необходимо установить разрешения в вашем первоначальном запросе авторизации. По умолчанию вы получаете доступ "только для чтения" к их основной информации. Настройка разрешения во время аутентификации является обязательной для API Facebook и LinkedIn.

Увидеть public_actions В разделе Facebook откройте график разрешений здесь и внесите соответствующие изменения в код авторизации, и получите решение вашей проблемы.

Я нашел лучший способ получить действительный токен и проверить права доступа через Graph API Explorer, НО, хотя документация Facebook обширна, ее не всегда легче всего соблюдать.

В проводнике вы должны посмотреть на оба:

  1. Приложение В настоящее время на вершине и довольно тонкий, я пропустил это целую вечность.
  2. Получить выпадающий токен То, что вы нажимаете, чтобы получить токен, когда вы нажимаете стрелку, вы можете выбирать страницы и другие элементы, к которым у вас есть доступ для выбора токена.
Другие вопросы по тегам