2012-05-20 69 views
-1

我目前正在開發一個網站,需要一個API調用社交插件網站來獲取用戶令牌。通過用戶令牌,我可以調用網站的登錄窗口,並讓用戶使用他/她的登錄憑據登錄,以允許我的應用獲取所需的數據。php - 如何解析從網站api調用返回的XML?

當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

回答

3

我給SimpleXMLElement一個鏡頭,一旦你有你的XML字符串(這也是我會用curl_exec(),順便說一下)......

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

現在你可以用你喜歡的任何方式使用$authUrl發送http重定向標頭:

header('Location: ' . $authUrl); 

或與另一個CURL。

希望有幫助!

(順便說一句,你不需要<?php標籤都有效的每一行,它從一個PHP代碼塊,實際上)

+0

它工作。非常感謝Lukx! – user1406773

+0

不錯!隨時「接受」我的答案,如果它幫助你! – Lukx