使用授权密钥和秘密的 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

服务如何生成和使用公共和秘密 API 密钥?

如何使用 API 密钥和秘密保护 Spring Boot API

如何验证对 Binance API 的 cURL 请求?

什么是最安全的存储和使用API 密钥和秘密的方法?

在数据库中存储 API 密钥和秘密