使用oAuth2和curl时,为什么一直得到unsupported_grant_type?

时间:2017-04-08 20:50:50

标签: php curl oauth-2.0 uber-api

我正在尝试使用uber rush api验证我的自我,并且我不断收到unsupported_grant_type错误消息。我不确定我在这里做错了什么。任何帮助将非常感激。以下是我正在使用的代码

这是命令行请求的样子:

curl -F "client_secret=<CLIENT_SECRET>" \
    -F "client_id=<CLIENT_ID>" \
    -F "grant_type=client_credentials" \
    -F "scope=delivery" \
    https://login.uber.com/oauth/v2/token

以下是我在PHP中编写的方法

$cl = curl_init("https://login.uber.com/oauth/v2/token");


curl_setopt($cl,CURLOPT_POST,["client_secret"=>"********"]);
curl_setopt($cl,CURLOPT_POST,["client_id"=>"**********"]);
curl_setopt($cl,CURLOPT_POST,["grant_type"=>"client_credentials"]);
curl_setopt($cl,CURLOPT_POST,["scope"=>"delivery"]);
$content = curl_exec($cl);
curl_close($cl);


var_dump($content);

2 个答案:

答案 0 :(得分:2)

这不是如何将POST数据添加到cURL。 PHP documentation告诉您这些选项实际意味着什么。试试这个:

<?php
$postdata = [
    "client_secret"=>"xxx",
    "client_id"=>"xxx",
    "grant_type"=>"client_credentials",
    "scope"=>"delivery",
];
$cl = curl_init("https://login.uber.com/oauth/v2/token");

curl_setopt_array($cl, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $postdata,
    CURLOPT_RETURNTRANSFER => true
]);
$content = curl_exec($cl);
curl_close($cl);
var_dump($content);

答案 1 :(得分:0)

此答案在上述答案不起作用时也非常有用 参考:Curl Grant_Type not found FIXED