Вопрос

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

Спасибо!

Редактировать: Я добавил половинчатое решение ниже.

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

Это было полезно?

Решение 9

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

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

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

Быстрая проверка на ГРУША найденный Сервис_facebook

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

Первый: добавьте приложение разработчика на 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 разрешения и добавляете приложение a.
  • Вы можете добавить 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

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

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 говорит:

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

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

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

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

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

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

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

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

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

Получайте удовольствие!

<?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 изменил свои требования к api.Это единственное, что я нашел, которое работает на данный момент:

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

Просто используйте фреймворк 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**
        }
    }
}
<?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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top