Мне удалось вытащить свой фид Facebook в хеш - как теперь манипулировать этими данными и распечатывать их «красиво»? - PullRequest
0 голосов
/ 07 сентября 2011

Выход можно увидеть здесь: http://4playtheband.co.uk/twitter/example.php

Пример сообщения:

Array
(
    [data] => Array
    (
        [0] => Array
            (
                [id] => 100001172604294_157498814333844
                [from] => Array
                    (
                        [name] => Martin Carlin
                        [id] => 100001172604294
                    )

                [picture] => http://platform.ak.fbcdn.net/www/app_full_proxy.php?app=291549705119&v=1&size=z&cksum=c37c749664ac69ae07a1f0ffcd1348e5&src=http%3A%2F%2Fcityvillefb2.static.zgncdn.com%2Fhashed%2F33a4a96920be7e6e3aeefe90b0915d1a.png
                [link] => http://apps.facebook.com/cityville/Reward.php?frHost=31058426480&frId=637143ed6a1be4e9ca42d9a5bd444066&frType=municipal_material_checkerflag&sendKey=bfdfe9442a98ce31102cf6f2eff52a2a%24%24ccF%28NVPZ%2A4jCM0YUzNKZxMdo6KHTAgZEZnQs5qUewzHYkAPHFoaJRaDyAG%29P9zeEXyVBDlaqIH7JYL%28wITH4BTXkXFfU3C9%28Ht&sig=8a0b72d997dc15d8fa76dbb9a627b55d&sendkey=bfdfe9442a98ce31102cf6f2eff52a2a%24%24ccF%28NVPZ%2A4jCM0YUzNKZxMdo6KHTAgZEZnQs5qUewzHYkAPHFoaJRaDyAG%29P9zeEXyVBDlaqIH7JYL%28wITH4BTXkXFfU3C9%28Ht
                [name] => Martin has an extra Checker Flag to help finish your Go Karts!
                [description] => Martin is working hard to build a new Go Karts in CityVille and could use your help. You'll earn bonus Coins for lending a hand, too!
                [icon] => http://photos-f.ak.fbcdn.net/photos-ak-snc1/v27562/71/291549705119/app_2_291549705119_3378.gif
                [actions] => Array
                    (
                        [0] => Array
                            (
                                [name] => Send Checker Flag,...
                                [link] => http://apps.facebook.com/cityville/Reward.php?frHost=31058426480&frId=637143ed6a1be4e9ca42d9a5bd444066&frType=municipal_material_checkerflag&sendKey=bfdfe9442a98ce31102cf6f2eff52a2a%24%24ccF%28NVPZ%2A4jCM0YUzNKZxMdo6KHTAgZEZnQs5qUewzHYkAPHFoaJRaDyAG%29P9zeEXyVBDlaqIH7JYL%28wITH4BTXkXFfU3C9%28Ht&sig=8a0b72d997dc15d8fa76dbb9a627b55d&sendkey=bfdfe9442a98ce31102cf6f2eff52a2a%24%24ccF%28NVPZ%2A4jCM0YUzNKZxMdo6KHTAgZEZnQs5qUewzHYkAPHFoaJRaDyAG%29P9zeEXyVBDlaqIH7JYL%28wITH4BTXkXFfU3C9%28Ht
                            )

                    )

                [type] => link
                [application] => Array
                    (
                        [name] => CityVille
                        [id] => 291549705119
                    )

                [created_time] => 2011-09-07T08:30:54+0000
                [updated_time] => 2011-09-07T08:30:54+0000
                [comments] => Array
                    (
                        [count] => 0
                    )

            )

        [1] => Array
            ( // etc

Я думаю только о том, чтобы просто распечатать первые 10 из этих постов. Сейчас у меня в ленте много дерьмовых вещей из Ситивилля, как вы можете видеть, но в конечном итоге это будет использоваться для реальной страницы компании, поэтому я не уверен, что в «нормальных» статусах все еще есть столько элементов?

Кроме того, есть ли способ установить ограничение на количество, которое я могу получить - в Facebook нет пункта, который решает дать мне только 25, когда мне нужны только 10 самых последних, код ниже:

<code><?php        

include_once "src/facebook.php";

$appId = '11111111111';   
$secret = '1111111111';

$facebook = new Facebook(array(
   'appId'  => $appId,
   'secret' => $secret,
   'cookie' => true,
));

//Facebook Authentication part

$user       = $facebook->getUser();

$loginUrl   = $facebook->getLoginUrl(
    array(
        'canvas'    => 1,
        'fbconnect' => 0,
        'scope'         => 'user_status,publish_stream,user_photos'
    )
);

if ($user) {
  try {

    //$user_profile = $facebook->api('/me');
    $user_feed = $facebook->api('/me/feed');
    //$user_home = $facebook->api('/me/home');

    echo $user_profile['name'];

    echo "<pre>";
    //print_r ($user_profile);
    print_r ($user_feed);
    //print_r ($user_home);
    echo "
"; } catch (FacebookApiException $ e) { $ user = null; } } if (! $ user) { echo " top.location.href = '$ loginUrl'; "; выход; } ?>

Любая помощь очень ценится, я не очень опытен со сложными массивами, такими как этот, и кому-то там, скорее всего, придется форматировать это самостоятельно, я уверен.

Спасибо

UPDATE

Спасибо за полезные ответы до сих пор, но я только что заметил, что комментарии и лайки включены в массив после их создания, и ему было интересно, как их получить, единственная проблема в том, что они находятся во еще одном вложенном массиве в общей структуре поста.

[0] => Array
    (
        [id] => 100001172604294_225960714119680
        [from] => Array
            (
                [name] => Martin Carlin
                [id] => 100001172604294
            )

        [message] => need to post something to see if this thing I'm trying to make work will pick it up. Apologies it's not entertaining, the odds will get better as the day goes on (probably).
        [comments] => Array
            (
                [data] => Array
                    (
                        [0] => Array
                            (
                                [id] => 100001172604294_225960714119680_2800008
                                [from] => Array
                                    (
                                        [name] => xxxxxxx
                                        [id] => 11111111
                                    )

                                 [message] => worst comment ever!
                                 [created_time] => 2011-09-07T09:10:49+0000
                                 [likes] => 1
                             )

                         )

                     [count] => 1
                )

            )`

1 Ответ

1 голос
/ 07 сентября 2011

Если вы хотите только первые 10, вы можете сделать что-то вроде этого

for ($i=0; $i<10, $i++) {
     // print the naem of the poster
     echo "posted by: ".$user_feed['data'][$i]['from']['name']."<br>";
     // print description of every post ...
     echo $user_feed['data'][$i]['description'];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...