第一次发帖,但多年来我找到了很多解决方案,所以感谢提供帮助的人。
我正在尝试使用 OAuth1.0 从 Google-apps-script 向 API 发送 GET 请求,其中多个参数共享相同的名称。
有没有办法使用 OAuth1 库来做到这一点? (link)
我设法让它使用单个参数名称。
var get_documents_params = [
["Name","value"],
['OtherName','value'],
];
以下具有重复参数名称的代码会出现错误“提供的身份验证无效:签名无效”。 当使用 postman 时,API 可以接收与我的请求相同的名称参数。
var service = getService();
var get_documents_params = [
["SameName","value1"],
['SameName','value2'],
];
var url = "https://the_API_url.com";
var query_params = '?';
query_params += encodeURIComponent(get_documents_params[0][0]) + '=' + encodeURIComponent(get_documents_params[0][1]) + '&';
query_params += encodeURIComponent(get_documents_params[1][0]) + '=' + encodeURIComponent(get_documents_params[1][1]);
var params = {
'method': 'GET',
'Accept':'application/json',
'muteHttpExceptions' : true
};
var response = service.fetch(url+query_params, params);
________
Logger.log(url+query_params);
// shows : "https://the_API_url.com?SameName=value1&SameName=value2"
_________
function getService() {
return OAuth1.createService('API_GET')
// Set the consumer key and secret.
.setConsumerKey(CONSUMER_KEY)
.setConsumerSecret(CONSUMER_SECRET)
.setAccessToken(TOKEN, TOKEN_SECRET);
}
<小时/>
postman 设置
GET https://the_API_url.com?SameName=value1&SameName=value2
HTTP/1.1
Accept: application/json
Authorization: OAuth
oauth_consumer_key="consumer_key",oauth_token="consumer_token",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1572334760",oauth_nonce="XXXXX",oauth_version="1.0",oauth_signature="XXXXX"
User-Agent: PostmanRuntime/7.19.0
Cache-Control: no-cache
Postman-Token: XXXXXX
Host: the_API_url.com
Accept-Encoding: gzip, deflate
Cookie: ajs_anonymous_id=XXXXX; mp_a6b59f6f7db3f0bbdef2c0450a4b4694_mixpanel=%7B%22distinct_id%22%3A%20%2216d9174a2537c6-0ccd361fcb3648-6a40291d-1fa400-16d9174a25460e%22%2C%22%24initial_referrer%22%3A%20%22%24direct%22%2C%22%24initial_referring_domain%22%3A%20%22%24direct%22%7D
Connection: keep-alive
<小时/>
我希望收到一个 JSon 对象,因为它在使用一次参数名称发送请求时起作用。
最佳答案
函数 service.fetch() 似乎只接受一次使用的参数名称,因为“url”参数通过库 OAuth1.0 被解释为一个对象。对象会覆盖多次使用的每个名称。
关于javascript - 如何使用 Oauth1 库发送带有重复参数 header 的 GET 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58592907/