PHP работать, чтобы получить Facebook статус?

голоса
9

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

Благодаря!

EDIT: Я добавил половину раствора ниже.

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

Задан 20/12/2008 в 22:44
источник пользователем
На других языках...                            


10 ответов

голоса
6

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

Ответил 20/12/2008 в 22:53
источник пользователем

голоса
1

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

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

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

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

Ответил 20/12/2008 в 23:09
источник пользователем

голоса
3

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

Во- первых: добавить приложение разработчика на 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 приложения и добавил aapplication.
  • Вы можете добавить offline_access, введя следующий адрес: 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?

Я надеюсь, что это помогает кто-то начать!

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

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

Ответил 21/12/2008 в 10:03
источник пользователем

голоса
0

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

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

Ответил 04/01/2009 в 20:35
источник пользователем

голоса
0
<?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>
Ответил 23/04/2010 в 16:29
источник пользователем

голоса
2

Я нашел способ выборки последнего статуса facebook. Это, как вы это делаете:

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

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

<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 сохраняется в куки 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 конечной долгоживущей.

Ответил 27/04/2010 в 09:56
источник пользователем

голоса
1

Я получил это работает, используя пост Jens', чтобы получить действительный access_token. Затем я извлек сообщения о состоянии и время размещения из файла XML, используя следующий код (вы можете изменить $ предел для отображения более или менее статусных сообщений, или использовать форму, чтобы изменить его).

Не забудьте положить в свой идентификатор Facebook и маркер доступа вы получили из приложения вы создали (см пост Jens' ). Вы можете проверить вывод этого сценария здесь .

Повеселись!

<?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");

}
?>
Ответил 01/09/2010 в 22:02
источник пользователем

голоса
2

Вот очень простая функция, если вы просто хотите, чтобы получить последний статус. Это не зависит от Facebook SDK или что-нибудь. Вам просто нужно CURL и JSON поддержки.

Простая функция PHP, чтобы получить статус facebook

Ответил 09/11/2010 в 21:57
источник пользователем

голоса
1

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

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

Ответил 16/06/2011 в 13:19
источник пользователем

голоса
1

Просто используйте рамки 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**
        }
    }
}
Ответил 20/02/2012 в 20:10
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more