2013-04-03 3 views
15

Я прочитал документы fb и письменный код, чтобы опубликовать сообщение на странице «facebook», однако я получаю сообщение об ошибке, ожидаем увидеть:Почему публикация на странице 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" для пользователя. Я принял разрешения, запрошенные моим приложением, когда перенаправлен на страницу с подпиской на 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.

F acebook возвращает:

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

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

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

+0

Вы можете поделиться своим кодом, я получаю точно такую ​​же ошибку? Или вы можете взглянуть на этот вопрос http://stackoverflow.com/questions/40434951/unable-to-post-to-facebook-page-javascript#40434951 – Mairaj

ответ

3

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

3

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

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

+1

На моем третьем этапе я успешно запросил (и был предоставлены) разрешения «publish_actions» и «manage_pages». Какие еще разрешения необходимы для публикации сообщения на странице facebook? –

+0

Я бы взял пример рабочего кода на любом языке. Я использую java (используя Scribe и RestFB). Я также перепробовал проблему достаточно, чтобы воспроизвести ее, используя только GraphExplorer, выталкивающий необработанный HTTP-API. Таким образом, это соответствовало бы тому, что это вопрос получения правильных разрешений. –

+0

I * сделал * установить разрешения в моем первоначальном запросе. Я снова спрошу: * Какие * разрешения необходимы, кроме «publish_actions» и «manage_pages»? –

27

Вы должны добавить разрешение, которое называется 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

Приветствия

+2

Да! «status_update» было разрешением, которое я отсутствовал. Спасибо. Теперь почему я не могу найти упоминание «status_update» среди всех документов facebook о разрешениях? https://developers.facebook.com/docs/concepts/login/permissions-login-dialog/ –

+0

Я зарегистрировал проблему с FB о недостающих документах (или в противном случае об ошибке). https://developers.facebook.com/bugs/289826861149962 –

+3

@ broc.seib Если вы посетите https: //developers.facebook.com/tools/explorer, нажмите кнопку «Получить доступ к токену», затем вы можете найти «status_update» в разделе «Расширенные разрешения». Официальная документация не всегда полная и актуальная. –

1

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

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

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