1

我正在 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" }

我错过了什么吗?

谢谢。

4

2 回答 2

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。

希望有帮助!

于 2013-03-16T17:19:10.983 回答
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>
于 2013-10-18T10:54:50.930 回答