当前位置: 首页 > 知识库问答 >
问题:

请求OAUTH令牌调查monkey v3时缺少参数

董子平
2023-03-14

我正在调用的URL是您可以清楚地看到我试图传入的参数的地方!

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

根据文档,我还使用了内容类型“application/x-www-form-urlencoded”(见下文)。

我的卷曲请求:

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;
}

我哪里出错了?

共有1个答案

云霖
2023-03-14

直接从文档中看,似乎可以获得发布字段所需的长期令牌:

//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/?shellnew-authentication

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

<?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;
 类似资料:
  • 当我试图从plurk API获取access_token时,我会重新执行“Bad Request 40007:Missing Request Token”

  • 我是一名自学成才的PHP开发人员,从未有过潜入OAuth的乐趣。我知道基本情况,但我无法让实现正常工作。我已经在互联网上和stackoverflow上搜索过了,虽然他们中的大多数似乎都接近我的问题,但没有一个有效。(或者我只是错过了一些东西) 我收到了消费者令牌、消费者秘密、访问令牌和访问令牌秘密。 据我所知,我应该使用消费者令牌和密码来请求访问令牌和密码,还是我错了? 我收到的带有令牌的手册没有

  • 这是我送的东西。

  • 我尝试从PHP向Android手机应用发送推送通知 我使用谷歌云消息,但在浏览器中我看到错误: 请求缺少身份验证密钥(FCM令牌)。请参阅FCM文档的“认证”部分,网址为https://firebase.google.com/docs/cloud-messaging/server.错误401 此外,我可以从c#控制台应用程序发送消息推送并在我的手机上接收它(我认为,授权密钥是正确的): 问题:如何

  • 文档(http://developers.box.com/oauth/)建议使用POSTMAN或curl。 在本例中,clientID是123,秘密代码是456,以此类推。 我在获得步骤1中的代码后的30秒内完成所有这些操作。 错误为{“error”:“invalid_request”,“error_description”:“无效的grant_type参数或缺少参数”} 我尝试过的其他方法:添加