ошибка публикации в Facebook: ‘ (# 200) Пользователь не авторизовал приложение для выполнения этого действия», введите: «OAuthException», код: 200

#facebook #node.js #post

#Facebook #node.js #Публикация

Вопрос:

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

 var access_token = 'access_token'
FB.setAccessToken(access_token);

var body = '2 4 6 8 8.5';
FB.api('me/feed', 'post',{ message: body, access_token:access_token}, function (res) {
if(!res || res.error) {
console.log(!res ? 'error occurred' : res.error);
return;
}
  

{ сообщение: ‘ (# 200) Пользователь не авторизовал приложение для выполнения этого действия»,
введите: «OAuthException»,
код: 200 }

И у меня есть еще один вопрос, какой токен доступа должен использоваться как токен доступа пользователя, токен доступа к приложению или что?

Ответ №1:

Вам нужно, чтобы пользователь разрешил расширенное разрешение publish_actions, чтобы разрешить вашему приложению публиковать сообщения на Facebook.

См. Раздел публикации ссылки на me / feed: «Токен доступа пользователя с разрешением publish_actions может использоваться для публикации новых сообщений». Пользователю необходимо запросить «вы согласны с тем, чтобы это приложение публиковало в Facebook» и принять этот токен доступа для работы.

Обратите внимание, что рекомендуется проверять разрешения пользователя перед попыткой публикации, что вы можете проверить, посмотрев на me/permissions конечную точку:

 {
  "data": [
    {
      "permission": "installed", 
      "status": "granted"
    }, 
    {
      "permission": "public_profile", 
      "status": "granted"
    }, 
    {
      "permission": "publish_actions", 
      "status": "granted"
    }, 
    {
      "permission": "user_friends", 
      "status": "granted"
    }
  ]
}
  

Вы можете получить эти данные, выполнив:

 FB.api("/me/permissions", function (response) {
    // data here
});
  

Чтобы запросить у пользователя разрешение, вам необходимо добавить «publish_actions» в scope при запуске FB.login диалогового окна:

  FB.login(function(response) {
   // handle the response
 }, {scope: 'publish_actions'});
  

Комментарии:

1. Я предполагаю, что вы даете мне правильный ответ, но, похоже, я все еще что-то упускаю, можете ли вы сказать мне, как заставить пользователя разрешить расширенное разрешение publish_actions

2. Я обновил нижнюю часть ответа, чтобы предоставить вам необходимый код.

3. Является ли FB.login стандартной функцией или API, или вы хотите указать область действия в моей функции входа?

4. на самом деле у меня нет функции входа в систему, я просто выполняю аутентификацию paassport, используя эти две функции app.get('/auth/facebook', passport.authenticate('facebook'), function(req, res){ }); app.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '' }), function(req, res) { res.redirect('/account'); });

5. Прочитайте раздел разрешений здесь passportjs.org/guide/facebook . Вы хотите использовать «область действия».