Функция PHP, чтобы получить статус Facebook? - PullRequest
9 голосов
/ 21 декабря 2008

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

Спасибо!

РЕДАКТИРОВАТЬ: Я добавил половину решения ниже.

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

Ответы [ 10 ]

6 голосов
/ 21 декабря 2008

Быстрая проверка Груша найдено Services_Facebook

3 голосов
/ 21 декабря 2008

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

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

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

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

<code> <?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) . "
"; // информация отладки ?>

Другая информация:

  • Вы должны войти в систему и иметь Приложение добавлено. ИЛИ вы даете приложение 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

2 голосов
/ 09 ноября 2010

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

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

2 голосов
/ 27 апреля 2010

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

1) Создайте приложение на Facebook и скопируйте свой секретный ключ приложения и идентификатор приложения.

2) Предоставьте приложению read_stream и offline_access вашему профилю. (http://developers.facebook.com/docs/authentication/permissions) Чтобы получить ваш последний статус, приложению требуется access_token. С предоставленным offline_access access_token не должен истекать никогда. Самый простой способ сделать это - нажать кнопку, созданную этим кодом: (не забудьте заполнить в 'id вашего приложения' и установите для 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 говорит:

Позволяет вашему приложению выполнять авторизованные запросы от имени пользователя в любое время. По умолчанию срок действия большинства маркеров доступа истекает через короткий промежуток времени, чтобы приложения выполняли запросы от имени пользователя только тогда, когда оно активно использует приложение. Это разрешение делает маркер доступа, возвращенный нашей конечной точкой OAuth, долгоживущим.

1 голос
/ 20 февраля 2012

Просто используйте PHPforFB framework ( www.phpforfb.com / ru / ) для самого быстрого пути.

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

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**
        }
    }
}
1 голос
/ 16 июня 2011

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

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

1 голос
/ 02 сентября 2010

Я заработал, используя сообщение Дженса, чтобы получить действительный токен доступа. Затем я извлек сообщения о состоянии и время публикации из 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");

}
?>
1 голос
/ 21 декабря 2008

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

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

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

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

0 голосов
/ 23 апреля 2010
<?php
// see http://github.com/facebook/php-sdk/blob/master/facebook.php
require './facebook.php';
// Create our Application instance.
// see http://www.youtube.com/watch?v=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>
0 голосов
/ 04 января 2009

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

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

...