2011-05-26 169 views
0

我想獲得OAuth與谷歌分析工作,但我沒有任何運氣。我的代碼如下所示:OAuth谷歌分析身份驗證與PHP

require_once('common.inc.php'); 

$consumerKey = "my.url.net"; 
$consumerSecret = "nzZ....TX"; 
$sig_method = "HMAC-SHA1"; 
$oauth_token = $token ? new OAuthToken($token, $token_secret) : NULL; 
$token_endpoint = '/accounts/OAuthGetRequestToken'; 
$scope = 'https://www.google.com/analytics/feeds/'; 
$callback_url = "http://my.url.net/pete/oauth/"; 
$privKey = NULL; 
$params = array('scope' => $scope, 'oauth_callback' => $callback_url); 
$url = $token_endpoint . '?scope=' . urlencode($scope); 

$consumer = new OAuthConsumer($consumerKey, $consumerSecret); 

$req = OAuthRequest::from_consumer_and_token($consumer, $oauth_token, 'GET', 
              $url, $params); 

//$req->sign_request($sig_method, $consumer, $oauth_token, NULL); 

echo "<PRE>"; 
print_r($req); 

// Fill response 
echo json_encode(array(
    'html_link' => '', 
    'base_string' => $req->get_signature_base_string(), 
    'response' => send_signed_request('GET', $url, array($req->to_header())), 
    'authorization_header' => $req->to_header() 
)); 

所以這個代碼運行時,它打印此:

OAuthRequest Object 
(
    [parameters:OAuthRequest:private] => Array 
     (
      [oauth_version] => 1.0 
      [oauth_nonce] => 5f....11 
      [oauth_timestamp] => 1306433873 
      [oauth_consumer_key] => my.url.net 
      [scope] => https://www.google.com/analytics/feeds/ 
      [oauth_callback] => http://my.url.net/pete/oauth/ 
     ) 

    [http_method:OAuthRequest:private] => GET 
    [http_url:OAuthRequest:private] => /accounts/OAuthGetRequestToken?scope=https%3A%2F%2Fwww.google.com%2Fanalytics%2Ffeeds%2F 
    [base_string] => 
) 

當我去掉這一行:

//$req->sign_request($sig_method, $consumer, $oauth_token, NULL); 

腳本只是加載失敗顯示服務器錯誤。我究竟做錯了什麼?任何建議將有所幫助,謝謝!

+1

推測「服務器錯誤」是「500內部服務器錯誤」。檢查服務器的錯誤日誌,瞭解導致它的具體細節。您在瀏覽器中看到的東西完全無用於診斷目的。 – 2011-05-26 18:37:44

回答

0

感謝您的評論馬克,這實際上是因爲我的「$ sig_method」變量實際上只是包含字符串「HMAC ......」當它實際上需要的是一個對象調用此:

$sig_method = new OAuthSignatureMethod_HMAC_SHA1(); 

希望這有助於未來的人!