Почему публикация на странице 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, например
и я могу публиковать на странице, которая мне понравилась, с помощью токена доступа, который я сейчас получаю:
Если вы хотите публиковать сообщения в качестве администратора страницы, вам, например, требуются права доступа manage_pages и status_update.
ура
Что ж, похоже, это распространенная ошибка, которую большинство из нас совершают, пытаясь сделать что-то в социальных сетях. Прежде чем пытаться создать действие с открытым графиком, вам необходимо установить разрешения в вашем первоначальном запросе авторизации. По умолчанию вы получаете доступ "только для чтения" к их основной информации. Настройка разрешения во время аутентификации является обязательной для API Facebook и LinkedIn.
Увидеть public_actions
В разделе Facebook откройте график разрешений здесь и внесите соответствующие изменения в код авторизации, и получите решение вашей проблемы.
Я нашел лучший способ получить действительный токен и проверить права доступа через Graph API Explorer, НО, хотя документация Facebook обширна, ее не всегда легче всего соблюдать.
В проводнике вы должны посмотреть на оба:
- Приложение В настоящее время на вершине и довольно тонкий, я пропустил это целую вечность.
- Получить выпадающий токен То, что вы нажимаете, чтобы получить токен, когда вы нажимаете стрелку, вы можете выбирать страницы и другие элементы, к которым у вас есть доступ для выбора токена.