Не могли бы вы объяснить, как я могу получать новостные ленты из Facebook в свое приложение? - PullRequest
4 голосов
/ 27 марта 2012

В моем приложении. я получаю фид пользователя и новостную ленту пользователя. С первым у меня нет вопросов, а со вторым у меня проблемы. Как можно получить доступ к тикеру с помощью php?

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

По моему опыту, это просто сокращенная версия новостной ленты пользователя, использующей "story"

Вот типовой пакетный запрос «только с 1 запросом», который я использую для отображения информации о тикере из новостной ленты пользователя.

пользователь / дом https://developers.facebook.com/docs/reference/api/user/#home

фильтрация результатов по спискам пользователей https://developers.facebook.com/docs/reference/fql/stream_filter/

Запрос API:

<code><?php

$Ticker = $facebook->api('/me/home?fields=id,story%26'.$access_token.'');
echo '<pre>';
print_r($Ticker);
echo '
'; ?>

Пакетный API-запрос:

<code><?php

$Ticker = '/me/home?fields=id,story%26'.$access_token.'';
$queries = array(
    array('method' => 'GET', 'relative_url' => ''.$Ticker.'')
);
$batchResponse = $facebook->api('?batch='.json_encode($queries), 'POST');
$MEticker = json_decode($batchResponse[0]['body'], true);
echo '<pre>';
print_r($MEticker);
echo '
'; ?>
0 голосов
/ 29 марта 2012

Большое спасибо!Я почти понял!:)

Еще один способ получить тикер:

<?php
$res = $app->facebook->get_friends_news('me',$access_token);
print_r($res);
print "Ticker:"."\r\n";

foreach ($res['data'] as $value){
    if (isset($value['story'])){
        echo $value['story']."\r\n";
    }
}
?>

, где

<?php
function get_friends_news($user_id ='me',$token)<br/>
    {
        $url = $this->url_base_graph.$user_id.'/home?access_token='.$token;
        $res = json_decode($this->httpQuery($url),true);
        return $res;
    }
?>

И:

<?php

function httpQuery($url, $method = 'GET', $post_data = array(), $CONNECTTIMEOUT = 30) {
        // type of query
        if ($method == 'POST')
        $method = 1;
        elseif ($method == 'GET')
        $method = 0;
        if ($this->access_token != false)
        $url = $url . 'access_token=' . $this->access_token;
        //echo $url;
        //traverse array and prepare data for posting (key1=value1)
        if (count($post_data)) {
            foreach ($post_data as $key => $value) {
                $post_items[] = $key . '=' . $value;
            }
            //create the final string to be posted using implode()
            $post_string = implode('&', $post_items);
        } else {
            $post_string = '';
        }
        //  echo $url;
        //create cURL connection
        $curl_connection = curl_init($url);

        //set options
        curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, $CONNECTTIMEOUT);
        curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
        curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($curl_connection, CURLOPT_URL, $url);
        curl_setopt($curl_connection, CURLOPT_POST, $method);

        //set data to be posted
        if ($post_string != '') {
            curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
        }

        //perform our request
        $result = curl_exec($curl_connection);

        //close the connection
        curl_close($curl_connection);

        return $result;
    }?>
...