如何将 cURL 转换为 Guzzle GET

How to convert cURL to Guzzle GET

首先:Stack Overflow 的第一个问题,非常荣幸! :D

如何将以下 curl 转换为 Guzzle?

curl -u USER_KEY:USER_SECRET https://api.apiexample.com/example/oauth/oauth?grant_type=client_credentials

我尝试了以下方法,但一直收到 403 - 禁止错误:

    $res = $client->request('GET', 'https://api.apiexample.com/example/oauth/oauth',[
        'auth' => ['USER_KEY', 'USER_SECRET'],
        'header' => [
                'Content-Type' => 'application/x-www-form-urlencoded'
        ],
        'form_params' => [
            'grant_type' => 'client_credentials'
        ]
    ]);

我的代码可能有什么问题?

编辑:忘了一件事:此请求 returns 一个持续 30 分钟的令牌。 运行 仅在令牌即将过期时才使用此功能的提示?

我建议重新格式化您的请求,方法是将您的常量值放在 Client 对象声明中,并将 request 包装在 try-catch 块中。 try-catch 块提供了额外的好处,它将帮助您调试响应。随意更改 catch 语句。

$client = new Client([
    'base_uri' => 'https://api.apiexample.com/example/',
    'auth' => [
        'USER_KEY',
        'USER_SECRET'
    ]
]);
try {
    $response = $client->request( 'GET', 'oauth/oauth', [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
        ],
        'form_params' => [
            'grant_type' => 'client_credentials'
        ]
    ]);
} catch (Exception $e) {
    error_log($e->getCode());
    error_log($e->getMessage());
    error_log(print_r($e->getTrace(), true));
}