php 缺少参数,关于php:请求OAUTH令牌调查猴子v3时缺少参数

我正在尝试使用CURL / PHP获取我的"长期访问令牌",但收到错误" client_id,client_secret,代码,grant_type,redirect_uri缺少参数"。

我正在调用的URL可以清楚地看到我要传递的参数!

https://api.surveymonkey.net/oauth/token?client_secret='.urlencode($client_secret).'&code='.urlencode($short_token).'&redirect_uri='.urlencode($redirect_url).'&client_id=' .urlencode($ client_id)。'&grant_type = authorization_code

我还根据文档使用了" application / x-www-form-urlencoded"的内容类型(请参见下文)。

我的CURL请求:

function survey_monkey_curl_request($url, $params=[], $request_type = 'get', $access_token) {

print_r($url);

$ch = curl_init();

$headers = [

"Content-Type: application/x-www-form-urlencoded",

"Authorization: bearer" .$access_token

];

$opts = [

CURLOPT_URL => $url,

CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0,

CURLOPT_HTTPHEADER => $headers,

CURLOPT_FOLLOWLOCATION => true,

CURLOPT_RETURNTRANSFER => 1,

CURLOPT_SSL_VERIFYPEER => 0,

];

if ($request_type == 'post') {

$opts[CURLOPT_POST] = 1;

//$opts[CURLOPT_POSTFIELDS] = json_encode($params);

}

if ($request_type == 'patch') {

$opts[CURLOPT_CUSTOMREQUEST] ="PATCH";

$opts[CURLOPT_POSTFIELDS] = json_encode($params);

}

curl_setopt_array($ch, $opts);

$result = curl_exec($ch);

if ($result === false)  {

curl_close($ch);

throw new Exception(curl_error($ch));

}

curl_close($ch);

return $result;

}

我要去哪里错了?

直接从文档中看来,它需要获得发布字段所需的长期令牌:

//Exchange for long-lived token

curl -i -X POST https://api.surveymonkey.net/oauth/token -d \

"client_secret=YOUR_CLIENT_SECRET \&code=AUTH_CODE \&redirect_uri=YOUR_REDIRECT_URI \&client_id=YOUR_CLIENT_ID \&grant_type=authorization_code"

https://developer.surveymonkey.com/api/v3/?shell#new-authentication

当您将参数附加到url上时,您将作为GET请求参数发送

您需要将数据字符串放入CURL POSTFIELDS中,并且不进行json编码

PHP答案

$ch = curl_init();

$data = [

'client_secret' => $YOUR_CLIENT_SECRET,

'code' => $AUTH_CODE,

'redirect_url' => $YOUR_REDIRECT_URI,

'client_id' => $YOUR_CLIENT_ID,

'grant_type' => 'authorization_code'

];//set your data as an array

$headers = [

"Content-Type: application/x-www-form-urlencoded",

"Authorization: bearer" . $access_token

];

$opts = [

CURLOPT_URL => $url,

CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0,

CURLOPT_HTTPHEADER => $headers,

CURLOPT_FOLLOWLOCATION => true,

CURLOPT_RETURNTRANSFER => 1,

CURLOPT_SSL_VERIFYPEER => 0,

];

if ($request_type == 'post') {

$opts[CURLOPT_POST] = 1;

$opts[CURLOPT_POSTFIELDS] = http_build_query($data);// this will build your data string from the array

}

curl_setopt_array($ch, $opts);

$result = curl_exec($ch);

curl_close($ch);

return $result;

谢谢-您的回应很有意义。 早上请尝试一下,如果可行,请举报/接受您的回答:)

上面的代码运行完美! 非常感谢您的协助:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值