Я пытаюсь использовать расширенный торговый API от Coinbase на PHP. Они решили использовать JWT, но не привели примера на PHP.
Я попробовал свой код, но он возвращает NULL. Я много раз проверял ключ API. Детали верны. Вот ссылка на документ Coinbase: https://docs.cloud.coinbase.com/advance ... t-api-auth
use Firebase\JWT\JWT;
$keyName = 'organizations/b0f974e{redacted}860/apiKeys/d840f8{redacted}b6d';
$keySecret = "-----BEGIN EC PRIVATE KEY-----\nMHcC{redacted}bHEzMVwDhg==\n-----END EC PRIVATE KEY-----\n";
$requestMethod = "GET";
$requestHost = "api.coinbase.com";
$requestPath = "/api/v3/brokerage/accounts";
function buildJwt($uri, $keyName, $keySecret) {
$privateKeyResource = openssl_pkey_get_private($keySecret);
if (!$privateKeyResource) {
throw new Exception('Private key could not be parsed or is invalid.');
}
$payload = [
'sub' => $keyName,
'iss' => 'coinbase-cloud',
'iat' => time(),
'exp' => time() + 120, // Token expiration time (example: 120 seconds from now)
'uri' => $uri,
];
$jwt = JWT::encode($payload, $privateKeyResource, 'ES256');
return $jwt;
}
function main($requestMethod, $requestHost, $requestPath, $keyName, $keySecret) {
$uri = "$requestMethod $requestHost$requestPath";
$jwtToken = buildJwt($uri, $keyName, $keySecret);
return $jwtToken;
}
$myjwt = main($requestMethod, $requestHost, $requestPath, $keyName, $keySecret);
function getAccountDetails($jwt, $requestMethod, $requestHost, $requestPath) {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://$requestHost$requestPath",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => $requestMethod,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $jwt",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
return json_decode($response, true);
}
}
$res = getAccountDetails($myjwt, $requestMethod, $requestHost, $requestPath);
var_dump($res);
Подробнее здесь: https://stackoverflow.com/questions/783 ... jwt-in-php
Coinbase: аутентификация с помощью JWT в PHP ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение