Получите настенный канал с общедоступной страницы Facebook с помощью Graph API - действительно ли это сложно?
Я начал читать показ сообщений Facebook для пользователей, не являющихся пользователями Facebook, но я не могу поверить, что это трудно получить публичный канал из facebook.
Страница, в которой я хочу, чтобы канал был общедоступным, вам не нужно входить в него.
Я прав, полагая, что мне нужна access_token, чтобы получить эту информацию, пытаясь получить доступ к URL без каких-либо ошибок OAuth.
Итак, поток должен быть таким (массово, чрезмерно сложным):
- Аутентификация с использованием пользователя (что, если пользователь не находится на Facebook?)
- Некоторая сложная абсурдность OAuth - просто чтобы прочитать фид, я даже не хочу, чтобы функция кнопки или сообщения на стене была
- Получить канал с помощью PHP-запроса на правильный URL-адрес с помощью пользователя access_token
- Отправлять фид
Предполагая, что пользователь не на Facebook, что вы делаете, используйте универсальное приложение для получения фида?
- Hardcode - запрос auth для Facebook с использованием моего общего идентификатора приложения и секретного
- Некоторая сложная абсурдность OAuth
- Получить фид с помощью PHP-запроса на правильный URL-адрес с помощью приложения access_token
- Отправлять фид
- О нет, auth истек, повторно авторизовался и захватил этот новый access_token для использования в будущих запросах.
Это кажется действительно сложным, поскольку никакая другая причина, кроме того, что Facebook хочет знать ВСЕ, что происходит, было бы проще сделать cURL и очистить контент от общедоступного URL с помощью XPath.
Любая помощь по этому поводу была бы большой.
Спасибо,
Джейк
ИЗМЕНИТЬ
Редактирование, чтобы показать это, не является точным дубликатом.
Я работал с access_token на месте, но теперь он терпит неудачу, токен истек, и я больше не могу использовать его для получения информации из публичной стены.
Я попытался продлить срок действия этого токена, используя методы, упомянутые в других сообщениях, но это не сработало, и срок действия не был расширен - мы сейчас здесь, с недопустимым токеном и дальше.
Кажется, что ручной процесс утверждения запроса OAuth означает, что невозможно запрограммировать фид публичной страницы.
Ответы
Ответ 1
Два года спустя вы можете программно сделать это с помощью приложения Facebook (пример с использованием PHP и Slim): https://developers.facebook.com/apps/
$base_api="https://graph.facebook.com/";
$client_id="XXXXXX";
$app_secret="XXXXXX";
//get a profile feed (can be from a page, user, event, group)
$app->get('/feed/:profileid/since/:start_date', function ($profile_id,$start_date) {
$start_time=date('m/d/Y h:i:s',$start_date);
$request = new FacebookRequest(
getSession(),
'GET',
'/'.$profile_id.'/feed?since='.$start_time
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
//do something with $graphObject
});
function getSession(){
$session = new FacebookSession(getAccessToken());
return $session;
}
function getAccessToken(){
global $base_api, $client_id, $app_secret;
$url=$base_api."oauth/access_token?client_id=".$client_id."&client_secret=".$app_secret."&grant_type=client_credentials";
$str = file_get_contents($url);
$token = str_replace ( "access_token=" , "" , $str );
return $token;
}
Ответ 2
У меня есть некоторый успех при чтении в прямом фиде без токенов и т.д.
(используя сороки, simplepie или путь запроса или аналогичные).
http://www.facebook.com/feeds/page.php?format=rss20&id=........
http://www.facebook.com/feeds/page.php?format=atom10&id=........
найдено на: http://ahrengot.com/tutorials/facebook-rss-feed/
Ответ 3
Facebook
изменил способ получения общедоступного фида на странице Facebook, так как другие ответы были опубликованы.
Просмотрите мой ответ/вопрос. Это не PHP
, но он предоставляет URLs
и процесс, который вам нужен.