Проблемы при попытке показать состояние при использовании идентика-php - PullRequest
0 голосов
/ 07 сентября 2011

Я использую identifica-php , чтобы получить один пост, используя showStatus, вот так:

<?php 
    ini_set('display_errors', 1);
    error_reporting(E_ALL);

    include '../scripts/identica.lib.php';
    include '../misc.php';

    // your identi.ca username and password
    $username = $_GET['u'];
    $password = $_GET['p'];
    $userid = $_GET['uid'];
    $postid = $_GET['pid'];

    // initialize the identi.ca class
    $identica = new Identica($username, $password, "Terrarium");

    // fetch the timeline in xml format
    $xml = $identica->showStatus("xml", $postid);

    $identica_status = new SimpleXMLElement($xml);
    $status = $identica_status->status;
    $user = $status->user;

    echo '<div id="singleStatus">' . $status->text . "</div><br />";
    echo '<div class="single_posted_at">' . $status->created_at . " via " . $status->source . '</div>';
    echo '<img src="' . $user->profile_image_url . '" class="identica_image">';
    echo '<a href="http://identi.ca/' . $user->screen_name . '" class="nameURL">' . $user->name . '</a>: ';
?>

Но когда я пытаюсь запустить код, все яполучил вот это:
Result of the code

Что я делаю не так?Пример результата XML: http://pastebin.com/Q52yfQp9

PS: я пытался показать только XML, чтобы выполнить тест, и это сработало, поэтому с идентификатором поста проблем не возникнетили XML, но в коде

Ответы [ 3 ]

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

Проблема не в идентичности php, а в том, как вы пытаетесь использовать SimpleXMLElement . Ваше $ identifica_status-> пользовательское свойство не является массивом, это повторяемый и доступный объект (согласно PHP-документам ).

попробовать:

$user = $identica_status->user->children();

или может быть проще получить доступ к элементам, расположенным ниже в дереве документа, например:

$identica_status->user->screen_name
1 голос
/ 14 октября 2011

status является корневым элементом XML, поэтому он не имеет геттера в объекте SimpleXMLElement. Ниже ваш код снова работает:

//$identica_status = new SimpleXMLElement($xml);
//$status = $identica_status->status;
$status = new SimpleXMLElement($xml);
$user = $status->user;
0 голосов
/ 08 сентября 2011

Эта библиотека, на которую вы ссылаетесь, действительно, очень старая (сентябрь '09), и с тех пор StatusNet сильно изменилась. Я не удивлен, что это больше не работает.

Однако, поскольку API Identica похож на API Twitter, вы, вероятно, могли бы использовать PHP-библиотеку Twitter, чтобы делать то, что вы хотите.

...