Проблемы при попытке показать состояние с помощью идентика-php
Я использую 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>: ';
?>
Но когда я пытаюсь запустить код, все, что я получаю, это:
Что я делаю не так? Пример результата XML: http://pastebin.com/Q52yfQp9
PS: я пытался показать только XML, чтобы сделать тест, и это сработало, так что это не будет проблемой с Post ID или XML, но в коде
3 ответа
status является корневым элементом XML, поэтому у него нет метода получения в объекте SimpleXMLElement. Ниже ваш код снова работает:
//$identica_status = new SimpleXMLElement($xml);
//$status = $identica_status->status;
$status = new SimpleXMLElement($xml);
$user = $status->user;
Проблема не в идентике -php, а в том, как вы пытаетесь использовать SimpleXMLElement. Ваше свойство $identifica_status->user не является массивом, это итеративный и доступный объект (согласно документации PHP).
пытаться:
$user = $identica_status->user->children();
или может быть проще просто получить доступ к элементам ниже в дереве документа, например:
$identica_status->user->screen_name
Эта библиотека, на которую вы ссылаетесь, действительно очень старая (сентябрь '09), и с тех пор StatusNet претерпела значительные изменения. Я не удивлен, что это больше не работает.
Однако, поскольку API Identica похож на API Twitter, вы, вероятно, могли бы использовать PHP-библиотеку Twitter, чтобы делать то, что вы хотите.