2011-07-27 81 views
0

我對雅虎來說是全新的! BOSS API。我已經註冊了BOSS API並獲得了所需的密鑰。雅虎BOSS API與OAuth集成

現在我想將它與PHP集成。我不知道如何使用OAuth服務來做到這一點。

任何人都可以引導我從起點或提供一些參考或例子。

謝謝。

回答

1

這是一種方法。這是從http://tech.groups.yahoo.com/group/ysearchboss/message/3614

<?php 

require("OAuth.php"); 


$cc_key = "YOUR KEY HERE"; 
$cc_secret = "YOUR SECRET HERE"; 
$url = "http://yboss.yahooapis.com/ysearch/web"; 
$args = array(); 
$args["q"] = "yahoo"; 
$args["format"] = "xml"; 
$args["count"] = 1; 

class NewsElement { 
var $abstract; 
var $clickurl; 
var $title; 
var $language; 
var $date; 
var $source; 
var $sourceurl; 
var $url; 

function NewsElement($aa) 
{ 
foreach ($aa as $k=>$v) { 
$this->$k = $aa[$k]; 
} 
} 
} 


function parseMol($mvalues) 
{ 
for ($i=0; $i < count($mvalues); $i++) { 
$mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"]; 
} 
return new NewsElement($mol); 
} 

function readXml($xmlResult) 
{ 
// read the XML database of aminoacids 
//$data = implode("", $xmlResult); 
$parser = xml_parser_create(); 
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); 
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); 
xml_parse_into_struct($parser, $xmlResult, $values, $tags); 
if(!xml_parser_free($parser)) 
die("Failed parsing"); 

// loop through the structures 
foreach ($tags as $key=>$val) { 
if ($key == "result") { 
$molranges = $val; 

    // each contiguous pair of array entries are the 
    // lower and upper range for each molecule definition 
    for ($i=0; $i < count($molranges); $i+=2) { 

$offset = $molranges[$i] + 1; 
$len = $molranges[$i + 1] - $offset; 
$tdb[] = parseMol(array_slice($values, $offset, $len)); 
} 
} else { 
    continue; 
} 
} 

return $tdb; 

} 

// Create oAuth request 
$consumer = new OAuthConsumer($cc_key, $cc_secret); 

$request = OAuthRequest::from_consumer_and_token($consumer, NULL,"GET", $url, $args); 

$request->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), $consumer, NULL); 

$url = sprintf("%s?%s", $url, OAuthUtil::build_http_query($args)); 

// Initalize HTTP request 

$ch = curl_init(); 
$headers = array($request->to_header()); 

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);Â 
curl_setopt($ch, CURLOPT_HEADER, 0);Â 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);Â 

$rsp = curl_exec($ch); 
$curl_result = curl_exec($ch) or die ("could not execute the request"); 
curl_close($ch); // close curl session 

// Read the XML and write to a single array 

$results = readXml($rsp); 
print_r($results); 

?>