gpt4 book ai didi

javascript - 使用数组参数签署 OAuth 请求

转载 作者:行者123 更新时间:2023-11-30 00:07:57 24 4
gpt4 key购买 nike

我在签署 URL 参数中包含数组的 OAuth 请求时遇到问题。这是我要签名的 URL 示例:

http://example.com/oauth1/products?filter[categorie]=myCategorie&page=1

我正在使用 OAuthSignatureJS生成签名,它在传递简单参数时完美运行,但在添加数组时返回 Invalid Signature 响应。我尝试使用 JSON 而不是 url,但仍然一样,我无法更改 API 服务器代码。

这是调用函数(AngularJS)

var request = generateRequest('GET', 'products', page, 'myCategorie');
request = request+'&page='+page+'&filter[categorie]=myCategorie';
$http.get(request, {timeout: config.timeout})
.success(function(json, status, headers, config){
})
.error(function(error){
console.log(error);
})

这是我用来生成请求的函数

var generateRequest = function(method, route, page = null, categorie = null) {
var timestamp = Math.floor(new Date().getTime()/1000);
var nonce = generateNonce();
var parameters = {
oauth_consumer_key: api.key,
oauth_nonce: nonce,
oauth_timestamp: timestamp,
oauth_signature_method: api.signature,
oauth_version: api.version
};

if(page) parameters.page = page;

if(categorie) {
parameters.filter = [];
parameters.filter['categorie'] = categorie;
console.log(parameters);
}

var link = 'http://example.com/oauth1/' + route;

// Generating the signature with OauthSignatureJS
var signature = oauthSignature.generate(method, link, parameters, api.secret);
var authentification = '?oauth_consumer_key='+api.key+'&oauth_signature_method='+api.signature+'&oauth_version='+api.version+'&oauth_timestamp='+timestamp+'&oauth_nonce='+nonce+'&oauth_signature='+signature;

return link+authentification;
}

在 URL 中传递 filter[categorie] 参数时,服务器响应 401 Unauthorized 消息。

Invalid Signature - provided signature does not match

我的代码有问题还是 OauthSignature JS 库有问题?

提前致谢。

最佳答案

我找到了答案,我只需要将过滤器数组作为字符串添加到参数对象 parameters['filter[categorie]'] = categorie;

所以这是新的工作代码

var generateRequest = function(method, route, page = null, categorie = null) {
var timestamp = Math.floor(new Date().getTime()/1000);
var nonce = generateNonce();
var parameters = {
oauth_consumer_key: api.key,
oauth_nonce: nonce,
oauth_timestamp: timestamp,
oauth_signature_method: api.signature,
oauth_version: api.version
};

if(page) parameters.page = page;

if(categorie) parameters['filter[categorie]'] = categorie;

var link = 'http://example.com/oauth1/' + route;

// Generating the signature with OauthSignatureJS
var signature = oauthSignature.generate(method, link, parameters, api.secret);
var authentification = '?oauth_consumer_key='+api.key+'&oauth_signature_method='+api.signature+'&oauth_version='+api.version+'&oauth_timestamp='+timestamp+'&oauth_nonce='+nonce+'&oauth_signature='+signature;

return link+authentification;
}

关于javascript - 使用数组参数签署 OAuth 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37753594/

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