php - curl 错误 : unsupported grant_type

标签 php json curl paypal header

我正在尝试找出 API documentation用于 Paypal 自适应支付。所以我正在尝试翻译这个 curl 命令(示例):

curl https://api.sandbox.paypal.com/v1/oauth2/token \
 -H "Accept: application/json" \
 -H "Accept-Language: en_US" \
 -u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \
 -d "grant_type=client_credentials"

进入 php(唯一没有显示的是我的 clientID 和密码):

$data =
    'client_id=' . $clientID . '&' .
    'client_secret=' . $clientSecret . '&' .
    "grant_type=client_credentials";

$url = "https://api.sandbox.paypal.com/v1/oauth2/token";
$headers = array(
    'Accept' => 'application/json',
    'Accept-Language' => 'en_US',
    "grant_type=client_credentials"
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERPWD, $clientID . ':' . $clientSecret);
$x = json_decode(curl_exec($ch));

var_dump($x);

这打印:

object(stdClass)#1 (2) { ["error"]=> string(22) "unsupported_grant_type" ["error_description"]=> string(22) "Unsupported grant_type" }

我搞砸了什么?有任何指示、指令或提示吗?这三天我一直在研究文档,但是很枯燥,而且似乎没有好的教程。谢谢。

最佳答案

我不确定为什么,我仍然接受任何可以解释原因的答案,但将 json_encode($data) 替换为 "grant_type=client_credentials"解决了我的问题。我想我仍然对 JSON 感到困惑,因为没有它似乎也能正常工作。

它现在给出了它应该给出的答案。几天后我会再次感到非常困惑;) paypal API 糟透了。

关于php - curl 错误 : unsupported grant_type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19203163/

相关文章:

php - 如何设置 curl 以允许 HTTPS?

php - 如何修复连接超时、cURL 错误 28?

php - 正则表达式中的双加号

javascript - Google Slides API 无法从页面实例读取幻灯片内容 (Node.Js)

php - RedBean PHP setMeta(...) 对于 UNIQUE 键不起作用

java - 如何在我的后端保持 JSON 更新

c# - 遍历包含多个 ExpandoObject 的 ExpandoObject

php - 当 header 存在时从 GET 响应中解析 JSON

php composer - 我的带有命名空间和类的包

php - 使用 phpexcel 创建多个工作表时出现一个额外的工作表