Функция PHP для получения статуса Facebook?

Я ищу хорошую простую функцию PHP, чтобы получать последние обновления статуса в Facebook. Кто-нибудь знает об одном?

Спасибо!

Обновлено: Я добавил полурешение ниже.

Или, если кто-нибудь знает, как хорошо прочитать RSS-ленту и выплюнуть недавнее обновление статуса?

Интересный вопрос. Я тоже хочу этот ответ!

Skuta 21.12.2008 01:17

К сожалению, почти все методы, описанные ниже, устарели: /

Petrogad 22.02.2011 00:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
9
2
45 308
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Быстрая проверка на ГРУША обнаружила Services_Facebook

Кажется, я никогда не ладил с PEAR, но если вам повезет больше, чем мне, то решение PEAR кажется лучшим долгосрочным путем.

Другая идея - изучить библиотеку API разработчика Facebook и посмотреть, может ли она дать вам то, что вы ищете.

Наконец, раньше был способ получить RSS-канал ... но я, похоже, больше не могу найти никаких инструкций, которые работают, но вы можете потрогать справку Facebook, если это вас интересует. Моя в итоге выглядит примерно так:

http://www.new.facebook.com/feeds/status.php?id=[idnumber]&viewer=[viewer]&key=[key]&format=rss20

Это неполный ответ, но до сих пор я получил следующее:

Первый: добавить приложение разработчика на FB. Затем создайте новое приложение. Называйте это как хотите.

Во-вторых: Загрузите клиент PHP. Сбросьте его где-нибудь на вашем веб-хосте, то есть / facebook /

В-третьих: скопируйте следующий код для начинающих, чтобы начать работу, в файл php:

 <?php
 require_once('facebook/php/facebook.php');
 $facebook = new Facebook("YOUR_API_KEY","YOUR_SECRET_KEY");
 $result = $facebook->api_client->fql_query("SELECT status FROM user WHERE uid = YOURIDNUMBER");
 // OR --- they both get the same data
 $result = $facebook->api_client->users_getInfo(YOURIDNUMBER,'status');
 print_r($result);
 echo "<pre>Debug:" . print_r($facebook,true) . "</pre>"; // debug info
 ?>

Дополнительная информация:

  • Вы должны войти в систему и иметь приложение добавлено. ИЛИ вы даете приложение offline_access разрешения и иметь добавлено приложение.
  • Вы можете добавить offline_access, набрав в следующем URL: http://www.facebook.com/authorize.php?api_key=YOUR_API_KEY&v=1.0&ext_perm=offline_access
  • больше информации о разрешениях можно найти здесь: http://wiki.developers.facebook.com/index.php/Extended_permissions
  • Я нахожусь в точке остановки: все, что угодно программа вызывает запрос fql или users_getInfo, моя страница останавливается выполнение php? я догадываюсь количество звонков ограничено для новых приложений? Я ни разу сделал любую разработку FB, так что я совершенно в новинку. Может сделать звонок и сохраните свой недавний статус (или самые последние статусы) в вашем собственная БД для предотвращения чрезмерных обращений к API?

Надеюсь, это поможет кому-нибудь начать работу!

Обновлено: Кажется, что FB не позволит вам получить доступ к чьему-либо статусу, даже если offline_access включен, если только вы не являетесь этим человеком или его другом (в зависимости от их настроек конфиденциальности).

Однако мне наконец удалось найти RSS-канал в новой версии профиля: http://www.new.facebook.com/minifeed.php?filter=11

Вы должны где-то что-то видеть. Пустой вывод обычно является признаком фатальной ошибки в apache error_log, если в вашем php.ini указано display_errors = off. Клиент FB - это красиво OO'ed PHP5 и обычно выдает довольно значимые и подробные исключения в случае ошибки.

Ian 21.12.2008 12:21

В итоге я сбросил свой СЕКРЕТНЫЙ ключ, и это решило проблему. Однако мой запрос fql не даст никаких результатов, если я не включу: $ fb_user = $ facebook-> require_login () ;. Разрешение offline_access, похоже, работает неправильно, или я ошибаюсь.

Bryan Denny 21.12.2008 12:37
Ответ принят как подходящий

Поскольку я не мог использовать маршрут API, я выбрал RSS, найденный по адресу: http://www.new.facebook.com/minifeed.php?filter=11

И использовал следующую функцию PHP, называется StatusPress, с некоторыми моими собственными изменениями, чтобы проанализировать RSS-канал на предмет моего статуса в Facebook. Работает отлично!

<?php
// see http://github.com/facebook/php-sdk/blob/master/facebook.php
require './facebook.php';
// Create our Application instance.
// see https://thewikihow.com/video_jYqx-RtmkeU for how to get these numbers
$facebook = new Facebook(array('appId' => 'XXX','secret' => 'XXX'));
// This call will always work since we are fetching public data.
// this could be /username or /username/friends etc...
// see developer api for FQL for examples
$status = $facebook->api('/haanmc/feed?limit=1');
?>
<p><?php print $status['data'][0]['message']; ?></p>
<p>Likes: <?php print $status['data'][0]['likes']; ?> | Comments: <?php print count($status['data'][0]['comments']['data']); ?></p>
<textarea style = "width: 95%; height: 600px;"><?php print_r($status); ?></textarea>

Я нашел способ получить ваш последний статус в фейсбуке. Вот как вы это делаете:

1) Создать приложение facebook и скопируйте секрет приложения и идентификатор приложения.

2) Разрешите приложению read_stream и offline_access своему профилю. (http://developers.facebook.com/docs/authentication/permissions) Чтобы получить ваш последний статус, приложению требуется access_token. С предоставлением offline_access срок действия access_token не должен истекать никогда. Самый простой способ сделать это - нажать кнопку, сгенерированную этим кодом: (обязательно введите «идентификатор вашего приложения» и установите для cookie значение true!)

<fb:login-button perms = "read_stream,offline_access"></fb:login-button>
<div id = "fb-root"></div>
<script src = "http://connect.facebook.net/en_US/all.js"></script>
<script>FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});</script>

3) Теперь попробуйте узнать, какой access_token он использует. Access_token сохраняется в файле cookie fbs_appId. Найдите его с помощью браузера или $_COOKIE['fbs_appId']. Ищите access_token=....

4) Теперь, когда у вас есть (надеюсь) никогда не истекающий access_token, вы можете использовать следующий код:

$access_token='xxxxxxxxxxxxxxxxxxxx';
$appId='123456789132456789';
$appSecret='xxxxxxxxxxxxxxxxxxxx';
$profileId='123456789';

//http://github.com/facebook/php-sdk/blob/master/src/facebook.php
require 'facebook.php';

$facebook = new Facebook(array('appId' => $appId,'secret' => $appSecret));
$response = $facebook->api('/'.$profileId.'/feed?limit=1&access_token='.$access_token);

5) Часть сообщения должна располагаться: $response['data'][0]['message']

Я не знаю, КАК долго токен доступа действителен. Facebook говорит:

Enables your application to perform authorized requests on behalf of the user at any time. By default, most access tokens expire after a short time period to ensure applications only make requests on behalf of the user when the are actively using the application. This permission makes the access token returned by our OAuth endpoint long-lived.

Я получил его, используя сообщение Дженса, чтобы получить действительный access_token. Затем я извлек сообщения о состоянии и время публикации из файла xml, используя следующий код (вы можете изменить $ limit для отображения большего или меньшего количества сообщений о состоянии или использовать форму для его изменения).

Обязательно введите свой идентификатор Facebook и токен доступа, полученный от созданного вами приложения (см. Сообщение Йенса). Вы можете проверить вывод этого скрипта здесь.

Повеселись!

<?php
if (isset($_POST['limit'])) {
    $limit = $_POST['limit'];
}
else {
    $limit = 3; // number of status messages to display
}
$f = fopen ("https://api.facebook.com/method/status.get?uid=YOUR_FACEBOOK_ID&limit = ".$limit."&access_token=YOUR_ACCESS_TOKEN", "r");

while ($line= htmlentities(fgets($f))) {
    if ($line===FALSE) print ("FALSE\n");
    else
    {
        $content = $content." ".$line;
    }
}
fclose ($f);

$message = explode("&lt;message&gt;", $content); // search for the <message> tag
$message_cnt = count($message);
$msg_index = 0;

$time = explode("&lt;time&gt;", $content); // search for the <time> tag

for($i=1; $i<$message_cnt; $i++)
{
    $tmp = explode("&lt;/message&gt", $message[$i]);
    $msg[$msg_index] = $tmp[0]; // status message

    $tmp2 = explode("&lt;/time&gt", $time[$i]);
    $t[$msg_index++] = $tmp2[0]; // time of posting
}

for($i=0; $i<$msg_index; $i++)
{
     echo("<span class=\"status\">".preg_replace('!\015\012|\015|\012!','<br>',$msg[$i])."</span><br>\n
           <span class=\"date\">on ".date("d.m.Y", $t[$i])." at ".date("H:i",$t[$i])."</span><br><br>\n");

}
?>

Вот ДЕЙСТВИТЕЛЬНО простая функция, если вы просто хотите получить последний статус. Это не зависит от Facebook SDK или чего-то еще. Вам просто нужна поддержка CURL и JSON.

Простая функция PHP для получения статуса facebook

Проголосовали, потому что это сэкономило мне некоторое время после того, как я исправил ваши ошибки в регистре имен переменных и отказ проверить, имел ли массив значения перед итерацией и т. д.

jerrygarciuh 29.07.2011 22:41

Я перепробовал множество руководств за последние несколько дней, и ни одно из них не помогло. Я думаю, это может быть связано с тем, что facebook изменил свои требования к API. Это единственное, что я нашел, который работает на данный момент:

http://www.deanblog.co.uk/article/13/adding-a-facebook-status-feed-to-your-website-with-php

Работал у меня на текущем FB API ... какой бы версии он ни был сейчас.

Keith G 19.08.2012 08:41

Просто используйте фреймворк PHPforFB (www.phpforfb.com/en/) как можно быстрее.

Код выглядит так:

require_once('phpforfb_framework.php');

$structInit = array('app_id' => APP_ID,'app_name' => APP_NAME,'sec_key' => APP_SECKEY);

$FacebookAPP = new PHPforFB($structInit);

if ($FacebookAPP->lastErrorCode>0){
    //Creation failed => Display error message and exit
    echo "PHPforFB Error: ".$FacebookAPP->lastErrorCode." -> ".$FacebookAPP->lastError;
}else{
    //PHPforFB framework established

    if ($FacebookAPP->userLoggedIn === TRUE){

        //If the user is logged in at Facebook:
        //Here you can determine if the user has at least once before
        //granted basic permissions to your application.
        if ($FacebookAPP->userAuthenticated === FALSE){

            //The user has not yet granted permissions
            //**your code here**
        }else{
            //The user has already granted permissions, therefore his Facebook ID
            //is known to us. It is always available in $FacebookAPP->userID:

            $userID = $FacebookAPP->userID;
            //**your code here**
        }
    }
}

Другие вопросы по теме