Получение публичных сообщений случайного пользователя из API Facebook
Я хочу получить последние сообщения некоторых случайных пользователей (публичные сообщения проклятия). я решил, что поскольку это публичные посты, мне не нужно спрашивать разрешения у владельца. Вот мой код:
function fetchUrl($url){
return file_get_contents($url);
}
$profile_id = "4";
$app_id = "****";
$app_secret = "****";
$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$app_id}&client_secret={$app_secret}");
$json_object = fetchUrl("https://graph.facebook.com/{$profile_id}/posts?{$authToken}");
$feedarray = json_decode($json_object , true );
foreach ( $feedarray as $feed_data )
{
var_dump( $feed_data);
}
Он возвращает некоторые данные о действиях пользователя, но ничего о посте!
Вот пример
Это мой FB acc (я редко его использую), я только что опубликовал сообщение (test3 )
https://www.facebook.com/Hereticcc
Когда я запускаю этот код с моим идентификатором учетной записи
$json_object = fetchUrl("https://graph.facebook.com/{$profile_id}/posts?{$authToken}&limit=50");
$feedarray = json_decode($json_object , true );
foreach ( $feedarray['data'] as $k=>$v )
{
/// var_dump( $v['story']);
echo $v['story']; echo '<br />';
}
Вот что я получаю ! никаких признаков поста, который я только что добавил, только лайки и дружеские отношения
Mj Tb Z likes Facebook Developers.
Mj Tb Z and Ahmad Masajedi are now friends.
Mj Tb Z and Di M AH are now friends.
Mj Tb Z likes Cult of Luna.
Mj Tb Z likes a link.
Mj Tb Z likes a status.
Mj Tb Z likes a link.
Mj Tb Z and Eh San Mans are now friends.
Mj Tb Z likes a link.
Mj Tb Z likes Mist Within.
Mj Tb Z likes Filmhaa.
Mj Tb Z likes a link.
Mj Tb Z and Mamad RJ are now friends.
Mj Tb Z likes a link.
Mj Tb Z is now using Facebook in English (US).
Mj Tb Z is now friends with Mushu Khoshbakht and Samin Zavarkesh.
Mj Tb Z likes a photo.
Mj Tb Z updated his cover photo.
Mj Tb Z and Mohammad Khoshbakht are now friends.
Я пробовал FQL
Вот мой код
$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$app_id}&client_secret={$app_secret}");
echo $fql_query_url = 'https://graph.facebook.com/'
. 'fql?q=SELECT+message+FROM+stream+WHERE+source_id=4'
. '&' . $authToken;
echo '<br />';
$fql_query_result = fetchUrl($fql_query_url);
$fql_query_obj = json_decode($fql_query_result, true);
echo '<pre>';
print_r("query results:");
print_r($fql_query_obj);
echo '</pre>';
Вот результат :
https://graph.facebook.com/fql?q=SELECT+message+FROM+stream+WHERE+source_id=4&access_token=284654551659478|D7T6A1uMSr1Qm1LLFBB9CQk_vK8
query results:Array
(
[data] => Array
(
)
)
1 ответ:
Вы не можете читать ленту сообщений (включая обновления их статуса, которые являются общедоступными) для случайного пользователя без его разрешения. Для этого вам потребуется действительный маркер доступа пользователя от пользователя с разрешением
read_stream.С допустимым маркером доступа вы можете добиться этого для конкретного пользователя или его друзей, используя запрос FQL в таблице stream. Вы можете использовать запрос типа:
SELECT post_id, message FROM stream WHERE source_id = {User_ID} LIMIT 50Или, если вы особенно обеспокоены статусами пользователя или его / ее друзей, вы можете использовать статус таблица, Как:
SELECT status_id, message FROM status WHERE uid = {User_ID} LIMIT 50
Однако есть способ прочитать поток обновлений статуса пользователя и обновления статуса страницы, как они размещены на Facebook. Это можно сделать с помощью Public Feed API. Но это будет включать в себя только обновления статуса, которые имеют их конфиденциальность установлена на "public" включены в поток. Кроме того, вы не можете подать заявку на использование API в настоящее время, так как его доступ ограничен.
Comments