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

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

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

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

  • Я создал приложение facebook, которое предоставляет мои APP_ID и APP_SECRET.
  • Я создал тестовую страницу "facebook". Обратимся к его fb id как PAGE_ID.
  • Используется OAuth для получения USER_ACCESS_TOKEN с областью действия "publish_actions, manage_pages" для пользователя. Я принял разрешения, запрошенные моим приложением, когда перенаправлен на страницу auth facebook.
  • Я сделал GET на 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, чтобы отправить сообщение на страницу:

  • Я сделал POST на 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? Есть ли настройка в приложении, которое мне не хватает? После нескольких дней отладки этого я должен быть слеп к этой проблеме.: - |

Ответы

Ответ 1

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

Ответ 2

Вам следует добавить разрешение 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

enter image description here

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

Если вы хотите опубликовать администратор страницы, вам потребуются разрешения 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

enter image description here

Приветствия

Ответ 3

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

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

Ответ 4

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

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

  • Приложение В настоящее время вверху и довольно тонко, я пропустил это целую вечность.
  • Получить раскрывающийся список токенов Что вы нажимаете, чтобы получить токен, когда вы нажимаете стрелку, вы можете выбрать страницы и другие элементы, к которым у вас есть доступ, для выбора маркера.