繁体   English   中英

使用OAuth通过PHP进行API授权

[英]Using OAuth for API Authorization with PHP

我正在尝试使用几种API来获取PHP中的数据。 他们都使用OAuth授权,但我终生无法解决。

如果我使用API​​的网址对数据进行CURL请求或file_get_contents请求,则显然它会要求我进行授权。

我的问题是,如何使用OAuth初始化此授权?

我有我的使用者密钥,使用者密钥,OAuth令牌和OAuth令牌密钥。 其中一个API声明我需要在请求中包含一个正确的OAuth标头,即:

Authorization: OAuth
  oauth_consumer_key="key",
  oauth_token="token",
  oauth_signature_method="HMAC-SHA1",
  oauth_signature="f922O9A2W5mFwDgiDvZbTSMK%2FPY%3D",
  oauth_timestamp="157131220",
  oauth_nonce="90922def48616d6d65724c61686176",
  oauth_version="1.0"  

但是我不知道如何在PHP中正确地编写此标头。
我尝试在PHP脚本的顶部使用header()或在file_get_contents请求中使用上下文参数。 我也研究过卷曲头。

我只是想不通。
我觉得我缺少明显的东西,任何建议将不胜感激!

我遵循( https://dev.twitter.com/oauth/overview/authorizing-requests )中的说明,因为当时我正尝试访问它们的API。 当时那是一件事错了。 那就是在步骤2.1的urlencoding。 现在可能有所不同。

您是否尝试过使用cURL进行请求? 我发现它比file_get_contents()更简单

$headers = array(
Authorization => OAuth
oauth_consumer_key => "key",
oauth_token => "token",
oauth_signature_method => "HMAC-SHA1",
oauth_signature => "f922O9A2W5mFwDgiDvZbTSMK%2FPY%3D",
oauth_timestamp => "157131220",
oauth_nonce => "90922def48616d6d65724c61686176",
oauth_version => "1.0" ); 

curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_NOBODY, true);
curl_setopt($cURL, CURLOPT_POST, true);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $data);
curl_setopt($cURL, CURLOPT_HEADER, true);
curl_setopt($cURL, CURLINFO_HEADER_OUT, true);
curl_setopt($cURL, CURLOPT_NOBODY, true);
curl_setopt($cURL, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($cURL);

不太确定数组的格式,但类似

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM