我试图访问PHP中的几个API。他们都使用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
请求中使用了context参数。我也查看了卷曲标题。
我无法弄明白。
我觉得我错过了一些明显的东西,任何建议都会非常感激!
答案 0 :(得分:1)
我按照(https://dev.twitter.com/oauth/overview/authorizing-requests)的说明操作,因为它是我当时尝试访问的API。当时有一件事是错的。这就是步骤2.1中的urlencoding。现在可能会有所不同。
答案 1 :(得分: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);
不太确定数组的格式,但类似的东西