gpt4 book ai didi

javascript - Node.js 中的 OAuth1.0 header

转载 作者:行者123 更新时间:2023-12-01 14:15:15 24 4
gpt4 key购买 nike

我一直在使用 API通过使用 OAuth1.0 的 postman ,成功。
现在我正在构建一个调用此 API 的 API,但是在尝试在 OAuth1.0 的 javascript 中设置等效项时遇到了麻烦。
标题如下所示:

'Authorization': 'OAuth oauth_consumer_key="XXX",oauth_token="XXX",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1559312415",oauth_nonce="XXX",oauth_version="1.0",oauth_signature="XXX"'

我的问题与 有关oauth_nonce oauth_signature .
我可以用来生成这两个参数的哈希函数是什么。
另外,我正在使用 AXIOS为请求。
谢谢你的时间。

最佳答案

我能够用 Axios 找到解决方案。我创建了一个 OauthHelper 类来生成 Authorization标题:

const crypto = require('crypto');
const oauth1a = require('oauth-1.0a');

const CONSUMERKEY = '<consumerKey>';
const CONSUMERSECRET = '<consumerSecret>';
const TOKENKEY = '<tokenKey>';
const TOKENSECRET = '<tokenSecret>';

class Oauth1Helper {
static getAuthHeaderForRequest(request) {
const oauth = oauth1a({
consumer: { key: CONSUMERKEY, secret: CONSUMERSECRET },
signature_method: 'HMAC-SHA1',
hash_function(base_string, key) {
return crypto
.createHmac('sha1', key)
.update(base_string)
.digest('base64')
},
})

const authorization = oauth.authorize(request, {
key: TOKENKEY,
secret: TOKENSECRET,
});

return oauth.toHeader(authorization);
}
}

module.exports = Oauth1Helper;

然后我就可以通过 Axios 从我需要的任何地方发帖:
const request = {
url: 'https://api-domain.com',
method: 'POST',
body: {
"uniqueId": 1234
}
};

const authHeader = Oauth1Helper.getAuthHeaderForRequest(request);

return await axios.post(
request.url,
request.body,
{ headers: authHeader });

关于javascript - Node.js 中的 OAuth1.0 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56398985/

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