使用 OAuth 通过 PHP 进行 API 授权

问题描述 投票:0回答:2

我正在尝试访问多个 API 来获取 PHP 中的数据。他们都使用 OAuth 授权,但我一辈子都搞不懂。

如果我使用 API 的 URL 发出 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
请求中使用上下文参数。我也研究过卷曲标题。

我就是想不通。
我觉得我错过了一些明显的东西,任何建议将不胜感激!

php curl oauth http-headers
2个回答
1
投票

我按照 (https://dev.twitter.com/oauth/overview/authorizing-requests) 的说明进行操作,因为这是我当时尝试访问的 API。当时有一件事情是错误的。这就是步骤 2.1 中的 urlencoding。现在可能有所不同了。


0
投票

您是否尝试过使用 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);

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

© www.soinside.com 2019 - 2024. All rights reserved.