构建一个OAuth请求,以便在PHP中使用CURL

时间:2014-10-13 19:28:50

标签: php curl oauth

我尝试在PHP中使用OAuth与外部服务器通信。这是一个服务器服务器功能,没有任何特定于任何用户的功能,因此所有的令牌和秘密都被处理它只是获取我必须处理的受保护资源。那和代理。

我无法看到如何通过代理指导PHP's OAuth,但我们已经有一个curl服务(在我们的Symfony2应用程序中),它适当地处理它,所以我只想使用OAuth生成身份验证标头并将其附加到常规curl get / post / put。我看到了generateSignature函数,但我不确定如何将其应用于curl标题。

1 个答案:

答案 0 :(得分:1)

我发现在CURL中设置标题非常简单

$oauth = new OAuth($this->consumerKey,$this->consumerSecret);

$oauth->setToken($this->token,$this->tokenSecret);
$url = $this->serviceUrl.'/locations/getlocations';
$nonce = mt_rand();
$timestamp = time();

$oauth->setTimestamp($timestamp);
$oauth->setNonce($nonce);

$sig = $oauth->generateSignature('GET',$url);

$header = array
 (
  'Content-Type: '.$ct,
  'Connection: keep-alive',
  'Keep-Alive: 800000', 
  'Expect:'
  );    
$header[] = 'Authorization: OAuth '.
            'oauth_consumer_key="'.$this->consumerKey.'"'.
            ',oauth_signature_method="HMAC-SHA1"'.
            ',oauth_nonce="'.$nonce.'"'.
            ',oauth_timestamp="'.$timestamp.'"'.
            ',oauth_version="1.0"'.
            ',oauth_token="'.$this->token.'"'.                      
            ',oauth_signature="'.urlencode($sig).'"'
            ;

然后使用CURL

curl_setopt($ch,CURLOPT_HTTPHEADER, header);