2013-11-02 97 views
0

我試圖爲雅虎製作私人API請求。我使用下面的代碼,但它不起作用。它總是返回消息'無效信號'。 你能幫我一個雙腿OAuth雅虎PHP的例子,它的作品?雙腿OAuth雅虎PHP示例

非常感謝。

<?php // a super-stripped down 2-leg oauth server/client example 

//http://oauth.net/code/ 
//http://oauth.googlecode.com/svn/code/php/OAuth.php 
require 'oauth.php'; 

$key = 'key'; 
$secret = 'secret'; 
$consumer = new OAuthConsumer($key, $secret); 
$sig_method = new OAuthSignatureMethod_HMAC_SHA1(); 

if ($_GET['server']) { 
    $method = $_SERVER['REQUEST_METHOD']; 
    $uri = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
    $sig = $_GET['oauth_signature']; 
    $req = new OAuthRequest($method, $uri); 
    // token is null because we're doing 2-leg 
    $valid = $sig_method->check_signature($req, $consumer, null, $sig); 
    if (!$valid) { 
     die('invalid sig'); 
    } 
    echo 'orale!'; 
} 
else { 
    // call this file 
    $api_endpoint = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']; 
    // handle request in 'server' block above 
    $parameters = array(
      'server' => 'true'); 

    // use oauth lib to sign request 
    $req = OAuthRequest::from_consumer_and_token($consumer, null, "GET", $api_endpoint, $parameters); 
    $sig_method = new OAuthSignatureMethod_HMAC_SHA1(); 
    $req->sign_request($sig_method, $consumer, null); // note: double entry of token 

    // get data using signed url 
    $ch = curl_init($req->to_url()); 
    curl_exec($ch); 
    curl_close($ch); 
} 
+0

這可能會幫助您,至少在工作流程方面:http://nullinfo.wordpress.com/oauth-yahoo/ – Ion

+0

這是一個很好的例子,但它需要獲得我的應用程序的用戶授權。我如何創建雙腿OAuth流程(無用戶授權)? – Junior

回答

0

根據雅虎規格here生成簽名嗎? 或者您可以使用描述爲here的明文簽名。