php - 如何解析来自网站的api调用返回的XML?

时间:2012-05-20 21:44:34

标签: php api redirect

我目前正在开发一个网站,该网站需要对社交插件网站进行API调用才能获得用户令牌。使用用户令牌,我可以调用网站的登录窗口,让用户使用他/她的登录凭据登录,以允许我的应用程序获取所需的数据。

当1)我对网站进行API调用时,2)它返回带有XML用户令牌的URL,如下所示:

1)

<a href="<?php echo "http://xxxxx.net/api/get_auth_url.xml?akey=$myAppKey" ?>" target="_blank">Login</a>

2)

<?xml version="1.0" encoding="UTF-8"?>
-<auth_token> <url>http://xxxxx.net/api/start_auth?token=7x1x81xfxxxxx5bxxxx3dx45trsda</url> <token>7x1x81xfxxxxx5bxxxx3dx45trsda</token> </auth_token>

但是,我对PHP相对较新,不确定处理此XML的正确方法是什么,并将网站重定向到“http://xxxxx.net/api/start_auth?token=7x1x81xfxxxxx5bxxxx3dx45trsda”。重定向后,我可以让用户登录并获取我需要的信息。

我尝试过使用如下所示的curl方法,但我不熟悉解析curl_exe()的结果并使用解析后的值重定向网站。我还没有能够使它工作,但我认为应该有更多的PHP本机方式来处理返回的XML并使用该序列化的XML对象来重定向网站。

<?php $ch = curl_init(); ?>
<?php curl_setopt($ch, CURLOPT_URL, "http://xxxxx.net/api/get_auth_url.xml?akey=$myAppKey"); ?>
<?php curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ?>
<?php $store = curl_exec($ch); ?>
<?php curl_close($ch); ?>

非常感谢任何反馈。 WL

2 个答案:

答案 0 :(得分:3)

一旦你获得了XML字符串,我就会给SimpleXMLElement一个镜头(顺便说一下,我也会使用curl_exec() ...)

$authTokenXml = new SimpleXMLElement( $store );
$authUrl = $authTokenXml->url

现在您可以以任何您喜欢的方式使用$authUrl,例如发送http重定向标头:

header('Location: ' . $authUrl);

或另一个CURL。

希望有所帮助!

(顺便说一句。你不需要<?php - 每一行都有标签。实际上它启动了一个php块。

答案 1 :(得分:0)