使用授权密钥和秘密的 PHP Curl API GET 调用
Posted
技术标签:
【中文标题】使用授权密钥和秘密的 PHP Curl API GET 调用【英文标题】:PHP Curl API GET Call using authorization key and secret 【发布时间】:2018-01-19 06:50:55 【问题描述】:我正在使用 php Curl 对 API (manheim api) 进行 GET 调用。 以下是我正在使用的代码:
$vin = 'abc.............';
$atoken = 'xzc.......................';
$request_headers = array();
$request_headers[] ='Authorization: Bearer: '.$atoken;
$request_headers[] ='Content-Type: application/x-www-form-urlencoded';
$handle = curl_init();
$api_url = 'https://api.manheim.com/descriptions/capture/vin/'.$vin;
$rawPostData = array( 'grant_type' => 'client_credentials', 'client_id' => 'xzc.......................', 'client_secret' => '6sd.......' );
// $data_string = json_encode($rawPostData);
$data_string = '';
//create name value pairs seperated by &
foreach($rawPostData as $k => $v)
$data_string .= $k . '='.$v.'&';
rtrim($data_string, '&');
curl_setopt_array(
$handle,
array(
CURLOPT_URL => $api_url,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data_string,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $request_headers,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HEADER => true,
CURLOPT_TIMEOUT => -1
)
);
$data = curl_exec($handle);
echo serialize($data);
我收到以下回复:
“HTTP/1.1 401 Unauthorized Content-Type: text/xml Date: Fri, 19 Jan 2018 06:44:21 GMT Server: Mashery Proxy WWW-Authenticate: Bearer realm="api.manheim.com" X-Error -Detail-Header: Account Inactive X-Mashery-Error-Code: ERR_403_DEVELOPER_INACTIVE X-Mashery-Responder: prod-j-worker-us-east-1e-123.mashery.com Content-Length: 27 Connection: keep-alive 开发者不活跃
它显示“开发者处于非活动状态”。我不确定我错在哪里。
【问题讨论】:
【参考方案1】:您在“Bearer”之后添加了一个冒号(:)。删除它,它应该可以工作。授权标头应类似于 Authorization: Bearer myvalidtoken
标题X-Mashery-Error-Code: ERR_403_DEVELOPER_INACTIVE
在您未正确验证时由 mashery 添加。原因可能是
“授权”标头的值不正确
使用不正确的 api 密钥创建令牌(无权访问该端点)
您的有效令牌已过期并已从 mashery 数据库中删除(通常在过期 1 小时后)
【讨论】:
以上是关于使用授权密钥和秘密的 PHP Curl API GET 调用的主要内容,如果未能解决你的问题,请参考以下文章
带/不带访问密钥和秘密访问密钥的 AWS Cognito InitiateAuth