尝试使用identica-php showStatus的问题

时间:2011-09-07 14:20:51

标签: php xml xml-parsing statusnet identica

我正在使用identica-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来进行测试并且它有效,所以它不会是Post ID或XML的问题,而是代码 < / p>

3 个答案:

答案 0 :(得分:1)

问题不在于identica-php,而是您尝试使用 SimpleXMLElement 的方式。您的 $ identica_status-&gt;用户属性不是数组,它是一个可迭代且可访问的对象(根据the PHP docs)。

尝试:

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

或者仅仅访问文档树中的元素可能更简单,如下所示:

$identica_status->user->screen_name

答案 1 :(得分:1)

status是XML的根元素,因此它在SimpleXMLElement对象中没有getter。 在您的代码下方重新访问工作:

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

答案 2 :(得分:0)

你链接到的这个库真的非常古老(2009年9月),从那时起StatusNet已经发展了很多。我不会感到惊讶,这不再适用了。

然而,由于Identica的API类似于Twitter,你可以使用Twitter PHP库来做你想做的事。