fas*_*ito 2 javascript post urlfetch google-apps-script
我设法通过 Postman 执行 API POST 请求,但一旦针对 Google App Script 进行修改,它就不起作用了。我认为这可能与格式有关body,我无法复制new URLSearchParams()GAS 中的对象(我相信我正在发送 JSON)。
谢谢。
邮递员(工作)-JavaScript 获取
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
var urlencoded = new URLSearchParams();
urlencoded.append("client_id", "XXXX");
urlencoded.append("client_secret", "XXXX");
urlencoded.append("grant_type", "client_credentials");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};
fetch("https://apigateway.criteo.com/oauth2/token", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Run Code Online (Sandbox Code Playgroud)
卷曲
curl --location --request POST 'https://apigateway.criteo.com/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=XXXX' \
--data-urlencode 'client_secret=XXXX' \
--data-urlencode 'grant_type=client_credentials'
Run Code Online (Sandbox Code Playgroud)
我的 GAS 版本有问题:(
function getCostAU() {
var myHeaders = {"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"};
var myPayload = {"client_id" : "XXXX",
"client_secret" : "XXXX",
"grant_type" : "client_credentials"};
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: myPayload,
redirect: 'follow',
};
var url = "https://apigateway.criteo.com/oauth2/token";
var result = JSON.parse(UrlFetchApp.fetch(url, requestOptions).getContentText());
var access_token = result.access_token;
};
Run Code Online (Sandbox Code Playgroud)
body不是argument中的有效键options。你应该改用payload。
redirect不是 options参数中的有效键
目前,URLSearchParams应用程序脚本不支持。
改成bodypayload
重新创建该payload对象作为查询字符串。例如,payload:{x:1,y:2}应改为x=1&y=2.
function objectToQueryParams(obj) {
return (
Object.entries(obj)
.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
.join('&')
);
}
const myPayload = {"client_id" : "XXXX",
"client_secret" : "XXXX",
"grant_type" : "client_credentials"};
console.log(objectToQueryParams(myPayload));Run Code Online (Sandbox Code Playgroud)
requestOption: const requestOptions = {
/**@see https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object)*/
method: 'POST',
headers: myHeaders,
payload: objectToQueryParams(myPayload),//modified
//or just payload: myPayload will work as mentioned in the comments below
//redirect: 'follow',//removed
followRedirects: true
};
Run Code Online (Sandbox Code Playgroud)
const requestOptions = {
/**@see https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object)*/
method: 'POST',
headers: myHeaders,
payload: objectToQueryParams(myPayload),//modified
//or just payload: myPayload will work as mentioned in the comments below
//redirect: 'follow',//removed
followRedirects: true
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2882 次 |
| 最近记录: |