Node.js无法通过axios在get请求中发送oauth v1参数 [英] Nodejs .Unable to send oauth v1 params in get request with axios

查看:150
本文介绍了Node.js无法通过axios在get请求中发送oauth v1参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用autho1.0a向ADP发出请求 我可以按邮递员的要求发出成功的请求,但不能通过我的应用程序. 邮递员屏幕截图

I wanted to make a request to ADP with autho1.0a I was able to make successful requests as I wanted in postman but not through my application. postman screenshot

使用了npm模块

类似帖子

我尝试过的代码 Part:1签名生成

Code I tried Part:1 Signature generation

const crypto = require('crypto')
const OAuth = require('oauth-1.0a')

const oauthObj = {};
function hash_function_sha1(base_string, key) {
    return crypto
        .createHmac('sha1', key)
        .update(base_string)
        .digest('base64')
}
oauthObj.getSignature = async payload => {
    const { consumerKey,consumerSecret,apiUrl,method} = payload;
    const oauth = OAuth({
        consumer: { key: `${consumerKey}`, secret: `${consumerSecret}` },
        signature_method: 'HMAC-SHA1',
        hash_function: hash_function_sha1,
    });
    const request_data = {
        url: `${apiUrl}`,
        method: `${method}`
    }
    const token = {}
    // return oauth.toHeader(oauth.authorize(request_data, token));
    console.log('header string-----',oauth.toHeader(oauth.authorize(request_data, token)));
    return oauth.authorize(request_data, token);
 }
module.exports = oauthObj;

第2部分:Axios通话

Part 2 : Axios Call

let oauthData=`oauth_consumer_key=${consumerKey}&oauth_signature_method=HMAC-SHA1&oauth_timestamp=${oauthTimestamp}&oauth_nonce=${oauthNonce}&oauth_version=1.0&oauth_signature=${oauthSignature}= HTTP/1.1`;
        const eventData = await axios({
            url:`${apiUrl}?${oauthData}`,
            // url:`${apiUrl}?${oauthHeader.Authorization}`,
            method:'GET',
            headers:{
                // ...oauthHeader,
                'Authorization':'OAuth',
                'Accept': 'application/json',
                // "Authorization": `'OAuth oauth_consumer_key="${consumerKey}", oauth_nonce="${oauthNonce}", oauth_signature="${oauthSignature}", oauth_signature_method="HMAC-SHA1", oauth_timestamp="${oauthTimestamp}", oauth_version="1.0"`
            }
        });

预期结果:

{
    "code": "Gone",
    "message": "Event with token 954c183f-26e0-4f9e-b452-c089aaf9842f has already been consumed."
}

接收错误:

response: {
    status: 401,
    statusText: 'Unauthorized',
    headers: {

可能出了什么问题?

推荐答案

尝试使用 request 节点程序包oauth选项

Try using request node package oauth option

request.get(`${apiUrl}?${oauthData}`, {
    oauth: {
        consumer_key: '..',
        consumer_secret: '..',
    },
    headers: {
        Accept: 'application/json'
    },
}, function (err, res, body) {
    console.log(body);
})

这篇关于Node.js无法通过axios在get请求中发送oauth v1参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆