gpt4 book ai didi

javascript - 如何使用 Oauth1 库发送带有重复参数 header 的 GET 请求?

转载 作者:行者123 更新时间:2023-11-28 03:26:33 24 4
gpt4 key购买 nike

第一次发帖,但多年来我找到了很多解决方案,所以感谢提供帮助的人。

我正在尝试使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com