#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 . Вы хотите использовать «область действия».