我正在尝试使用Google表格使用urlFetchApp发送POST请求。
我已经编写了下面的代码,但可以使它工作。每次运行此脚本时,我都会出现以下错误 - “code”:400,“message”:“错误的请求:不完整的令牌请求”。我不明白,因为当我从POSTMAN运行相同的请求时,我有一个成功的答案。在flied client id中,我有像“/”和“+”这样的特殊字符,在client_secret“!”中,也许它来自那里?
感谢您的帮助!
---- GSheets脚本-----
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="container">
<div class="button" id="circleToggle">+</div>
<div class="circle" id="circle1">Some data</div>
<div class="circle" id="circle2"></div>
</div>
-----邮差中的卷曲命令-------
function DX_API_request() {
var payload = {
'grant_type': 'client_credentials',
'client_id': 'name/a+@b.com',
'client_secret': 'XXX!'
};
var options = {
'method' : 'POST',
'Accept': 'application/json',
'payload' : JSON.stringify(payload),
'muteHttpExceptions': true
};
Logger.log(JSON.stringify(payload));
var test = UrlFetchApp.getRequest('https ://dx-example.com/admin/v100/api/oauth/token', options);
Logger.log(test);
var resquest_bearer = UrlFetchApp.fetch('https ://dx-example.com/admin/v100/api/oauth/token',options);
Logger.log(resquest_bearer);
var dataAll = JSON.parse(resquest_bearer.getContentText());
Logger.log(dataAll.message);
}
答案 0 :(得分:0)
您在google apps脚本中没有像curl命令那样提出相同的请求。
在使用curl发出的请求中,您要将内容类型设置为application/x-www-form-urlencoded
,并设置另外两个标题:Cache-Control: no-cache
Postman-Token: 655d9932-4681-f23d-6caf-5fcf63c10b82
Google脚本中的相同请求类似于:
var payload = {
'grant_type': 'client_credentials',
'client_id': 'name/a+@b.com',
'client_secret': 'XXX!'
};
var options = {
'method': 'post',
'payload': payload,
'headers': {
"Cache-Control": 'no-cache',
"Postman-Token": '655d9932-4681-f23d-6caf-5fcf63c10b82'
}
};
var test = UrlFetchApp.getRequest('https://dx-example.com/admin/v100/api/oauth/token', options);
Logger.log(test);
主要问题可能是您脚本将数据发布为application/json
而非application/x-www-form-urlencoded
。更多信息:https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app