我正在使用PHP测试Stripe的OAuth流程。
我可以在登陆页面中获取authorization code
请求。
但是当我执行cURL请求从授权代码获取访问令牌时,我收到一个错误,即No grant type specified
。
以下是目前我的登陆页面代码:
<?php
$authorization_code = $_REQUEST['code'];
$params = array();
$params['grant_type'] = 'authorization_code';
$params['code'] = $authorization_code;
$url = 'https://connect.stripe.com/oauth/token';
$ch = curl_init();
$header = array ();
curl_setopt( $ch, CURLOPT_HTTPHEADER, array ('Accept: application/json', 'Content-Length: 0', 'Authorization: Bearer sk_test_secretkey' ) );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS,$params);
$response = curl_exec( $ch );
echo $response;
?>
这就是我得到的错误:
{ "error": "invalid_request", "error_description": "No grant type specified" }
我错过了什么吗?
感谢。
答案 0 :(得分:1)
您可能需要对参数进行url编码:
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
Stripe Connect文档(https://stripe.com/docs/connect/oauth#sample-code)中有一个PHP示例。如果您仍然遇到问题,可能需要使用某种HTTP代理来查看您实际通过网络发送的内容或联系support@stripe.com。
希望有所帮助!
答案 1 :(得分:0)
试试这个。这对我来说可以。
$params = array();
$params['grant_type'] = 'authorization_code';
$params['code'] = $authorization_code;
$url = 'https://connect.stripe.com/oauth/token';
$ch = curl_init();
$header = array ();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS,$params);
$response = curl_exec( $ch );
echo $response;
?> <pre>