Получение общедоступных статусов страниц с использованием API-интерфейса Facebook без доступа к токенам
Я пытаюсь использовать API-интерфейс Facebook для получения последнего статуса с открытой страницы, пусть http://www.facebook.com/microsoft
Согласно http://developers.facebook.com/tools/explorer/?method=GET&path=microsoft%2Fstatuses - мне нужен токен доступа. Поскольку страница Microsoft является "общедоступной", это определенно так? Нет ли способа получить доступ к этому общественному статусу без токена доступа?
Если это так, как правильно выбрать токен доступа для моего сайта? У меня есть идентификатор приложения, однако все примеры в http://developers.facebook.com/docs/authentication/ описывают обработку входа пользователя. Я просто хочу получить последнее обновление статуса на странице Microsoft и отобразить его на своем сайте.
Ответы
Ответ 1
Это по замыслу. Когда-то можно было получить последний статус с общедоступной страницы без маркера доступа. Это было изменено, чтобы заблокировать неопознанный анонимный доступ к API. Вы можете получить токен доступа для приложения (если у вас не установлено приложение Facebook для вашего сайта - вы должны его создать) с помощью следующего вызова с использованием Graph API:
https://graph.facebook.com/oauth/access_token?
client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&
grant_type=client_credentials
Это называется токен доступа к приложению. Затем вы продолжаете фактический вызов API, используя маркер доступа к приложению сверху.
надеюсь это поможет
Ответ 2
Вы можете использовать AppID и секретный ключ, чтобы получать публичные сообщения/фиды на любой странице. Таким образом, вам не нужно получать токен доступа. Назовите это, как показано ниже.
https://graph.facebook.com/PAGE-ID/feed?access_token=APP-ID|APP-SECRET
И получить сообщения.
https://graph.facebook.com/PAGE-ID/posts?access_token=APP-ID|APP-SECRET
Ответ 3
Вы можете получить посты, просто запросив сайт, который запрашивает ваш браузер, а затем извлекая посты из HTML.
В NodeJS вы можете сделать это так:
// npm install request cheerio request-promise-native
const rp = require('request-promise-native'); // requires installation of 'request'
const cheerio = require('cheerio');
function GetFbPosts(pageUrl) {
const requestOptions = {
url: pageUrl,
headers: {
'User-Agent': 'Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0'
}
};
return rp.get(requestOptions).then( postsHtml => {
const $ = cheerio.load(postsHtml);
const timeLinePostEls = $('.userContent').map((i,el)=>$(el)).get();
const posts = timeLinePostEls.map(post=>{
return {
message: post.html(),
created_time: post.parents('.userContentWrapper').find('.timestampContent').html()
}
});
return posts;
});
}
GetFbPosts('https://www.facebook.com/pg/officialstackoverflow/posts/').then(posts=>{
// Log all posts
for (const post of posts) {
console.log(post.created_at, post.message);
}
});
Для получения дополнительной информации: fooobar.com/info/16881525/...