Google Apps 脚本和 curl
Google Apps Script and curl
这可能是一个非常简单的问题,但我对 curl
还很陌生,从来没有得到正确的解释。这是我第一次不得不通过 curl
获取访问令牌,而且我从未见过示例。我的 google 搜索没有帮助。
我知道在获得访问令牌后如何发出交易请求,但无法获得令牌以继续执行该步骤。
下面是api如何获取令牌的文档示例:
curl -X POST -u <API USERNAME>:<API SECRET KEY> https://api.neverbounce.com/v3/access_token\
-d grant_type=client_credentials\
-d scope=basic+user
由于 UrlFetchApp
需要 url,我应该如何在 Google Apps Script
中进行此调用,但此示例中的 url 是请求的一部分?
更新
这是我的代码示例:
function NBpost() {
var dataString = 'grant_type=client_credentials&scope=basic+user';
var url = "https://api.neverbounce.com/v3/access_token";
var options =
{
"method" : "post",
"auth": {
'user': <USERNAME>,
'pass': <SECRET KEY>,
},
body : dataString,
"muteHttpExceptions" : true
};
var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
}
响应始终相同:
error:"invalid_request",
error_description:"The grant type was not specified in the request"
我也试过:
var dataString = {
"grant_type": "client_credentials",
"scope" : "basic user"
};
但响应没有改变。我做错了什么?
更新 2
我做了以下修改:
function myFunction(){
var url ='https://api.neverbounce.com/v3/access_token';
var options = {
method: "post",
u: {
<USERNAME> : <SECRET KEY>
},
payload: {
"grant_type": "client_credentials",
"scope": "basic user"
},
muteHttpExceptions: true
};
var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
}
现在,我得到这个错误:
error:"invalid_client"
error_description:"Client credentials were not found in the headers or body"
下面的示例脚本怎么样?我不知道这是否有效,因为我没有 <API USERNAME>
和 <API SECRET KEY>
.
示例脚本:
var apiusername = <API USERNAME>
var apisecretkey = <API SECRET KEY>
var url ='https://api.neverbounce.com/v3/access_token';
var options = {
method: 'post',
headers : {"Authorization" : " Basic " + Utilities.base64Encode(apiusername + ":" + apisecretkey)},
payload: {
"grant_type": "client_credentials",
"scope": "basic+user"
},
muteHttpExceptions: true
};
var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
如果这不起作用或者我误解了你的问题,我很抱歉。
这可能是一个非常简单的问题,但我对 curl
还很陌生,从来没有得到正确的解释。这是我第一次不得不通过 curl
获取访问令牌,而且我从未见过示例。我的 google 搜索没有帮助。
我知道在获得访问令牌后如何发出交易请求,但无法获得令牌以继续执行该步骤。
下面是api如何获取令牌的文档示例:
curl -X POST -u <API USERNAME>:<API SECRET KEY> https://api.neverbounce.com/v3/access_token\
-d grant_type=client_credentials\
-d scope=basic+user
由于 UrlFetchApp
需要 url,我应该如何在 Google Apps Script
中进行此调用,但此示例中的 url 是请求的一部分?
更新
这是我的代码示例:
function NBpost() {
var dataString = 'grant_type=client_credentials&scope=basic+user';
var url = "https://api.neverbounce.com/v3/access_token";
var options =
{
"method" : "post",
"auth": {
'user': <USERNAME>,
'pass': <SECRET KEY>,
},
body : dataString,
"muteHttpExceptions" : true
};
var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
}
响应始终相同:
error:"invalid_request",
error_description:"The grant type was not specified in the request"
我也试过:
var dataString = {
"grant_type": "client_credentials",
"scope" : "basic user"
};
但响应没有改变。我做错了什么?
更新 2
我做了以下修改:
function myFunction(){
var url ='https://api.neverbounce.com/v3/access_token';
var options = {
method: "post",
u: {
<USERNAME> : <SECRET KEY>
},
payload: {
"grant_type": "client_credentials",
"scope": "basic user"
},
muteHttpExceptions: true
};
var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
}
现在,我得到这个错误:
error:"invalid_client"
error_description:"Client credentials were not found in the headers or body"
下面的示例脚本怎么样?我不知道这是否有效,因为我没有 <API USERNAME>
和 <API SECRET KEY>
.
示例脚本:
var apiusername = <API USERNAME>
var apisecretkey = <API SECRET KEY>
var url ='https://api.neverbounce.com/v3/access_token';
var options = {
method: 'post',
headers : {"Authorization" : " Basic " + Utilities.base64Encode(apiusername + ":" + apisecretkey)},
payload: {
"grant_type": "client_credentials",
"scope": "basic+user"
},
muteHttpExceptions: true
};
var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
如果这不起作用或者我误解了你的问题,我很抱歉。