Php 如何从Viva Wallet获取OAuth 2访问令牌

Php 如何从Viva Wallet获取OAuth 2访问令牌,php,curl,oauth,Php,Curl,Oauth,在此步骤中,我需要发送以下参数: POST https://demo-accounts.vivapayments.com/connect/token HTTP/1.1 Authorization: Basic Z2VuZXJpY19hY3F1aXJpbmdfY2xpZW50LmFwcHMudml2YXBheW1lbnRzLmNvbTpnZW5lcmljX2FjcXVpcmluZ19jbGllbnQ Accept: application/json Content-Type: applic

在此步骤中,我需要发送以下参数:

 POST https://demo-accounts.vivapayments.com/connect/token HTTP/1.1
 Authorization: Basic Z2VuZXJpY19hY3F1aXJpbmdfY2xpZW50LmFwcHMudml2YXBheW1lbnRzLmNvbTpnZW5lcmljX2FjcXVpcmluZ19jbGllbnQ
 Accept: application/json
 Content-Type: application/x-www-form-urlencoded
 grant_type=client_credentials
我所做的:(访问我已经获得的令牌) 我收到的错误是: 错误的请求 您的浏览器发送了此服务器无法理解的请求。 参考#7.85c5d3ba.1606074405.4bd39133

链接API:(我在步骤2中停止了:请求访问令牌)
CURLOPT\u HTTPAUTH

要使用的HTTP身份验证方法。选项有:CURLAUTH_BASIC、CURLAUTH_DIGEST、CURLAUTH_gssnegate、CURLAUTH_NTLM、CURLAUTH_ANY和CURLAUTH_ANYSAFE

CURLOPT_USERPWD

用于连接的用户名和密码格式为“[用户名]:[密码]”

尝试更新代码向
/token
端点发送POST请求以获取令牌

您应该在
$result
中找到一个令牌:

$credentials = "$login:$password";
$ch = curl_init();
$options = array(
    CURLOPT_URL => 'https://demo-accounts.vivapayments.com/connect/token',
    CURLOPT_POST => 1,
    CURLOPT_HEADER => false,
    // Set the auth type as `Basic`
    CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
    // Set login and password for Basic auth
    CURLOPT_USERPWD => $credentials,
    CURLOPT_HTTPHEADER => array(
        'Accept: application/json',
        'Content-Type: application/x-www-form-urlencoded'
    ),
    // To send additional parameters in the POST body
    CURLOPT_POSTFIELDS => "grant_type=client_credentials"
);

curl_setopt_array($ch, $options);
// This is the response for your request
$result = curl_exec($ch);
// This is the response status code (if you are interested)
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
请查看示例并在此处进行尝试:

你应该发送带有前缀的代币:
持有者你的代币
你好,弗拉基米尔,谢谢你的回答。。我这样写:“持票人”。访问\u令牌,但未工作!:(…我不知道我在做什么,因为我的项目做得太晚了没有“不工作”这样的事情。请提供准确的结果或错误。因此,它返回相同的错误:请求错误您的浏览器发送了一个此服务器无法理解的请求。参考#7.85c5d3ba.1606080025.4C2E3140您为什么尝试将请求发送到
https://demo-accounts.vivapayments.com/connect/token
?你说你已经有代币了吗?现在,它是成功了!我知道在stackoverflow这不是一个值得感谢的好做法,但我还不能投票……所以这里有一个类似于(Y)@CleberCastiglioni的答案,你应该能够将它标记为正确答案。
$credentials = "$login:$password";
$ch = curl_init();
$options = array(
    CURLOPT_URL => 'https://demo-accounts.vivapayments.com/connect/token',
    CURLOPT_POST => 1,
    CURLOPT_HEADER => false,
    // Set the auth type as `Basic`
    CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
    // Set login and password for Basic auth
    CURLOPT_USERPWD => $credentials,
    CURLOPT_HTTPHEADER => array(
        'Accept: application/json',
        'Content-Type: application/x-www-form-urlencoded'
    ),
    // To send additional parameters in the POST body
    CURLOPT_POSTFIELDS => "grant_type=client_credentials"
);

curl_setopt_array($ch, $options);
// This is the response for your request
$result = curl_exec($ch);
// This is the response status code (if you are interested)
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);