首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs .Unable在get请求中用axios发送oauth v1参数

Nodejs .Unable在get请求中用axios发送oauth v1参数
EN

Stack Overflow用户
提问于 2020-04-27 12:29:59
回答 1查看 936关注 0票数 1

我想用autho1.0a向ADP提出一个请求,我能够像邮递员那样成功地提出请求,但不是通过我的应用程序。邮递员截图

npm模块

类似职位

我试过的代码部分:1签名生成

代码语言:javascript
复制
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调用

代码语言:javascript
复制
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"`
            }
        });

预期结果:

代码语言:javascript
复制
{
    "code": "Gone",
    "message": "Event with token 954c183f-26e0-4f9e-b452-c089aaf9842f has already been consumed."
}

接收错误:

代码语言:javascript
复制
response: {
    status: 401,
    statusText: 'Unauthorized',
    headers: {

什么地方可能出了问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-28 04:55:11

尝试使用请求节点包oauth选项

代码语言:javascript
复制
request.get(`${apiUrl}?${oauthData}`, {
    oauth: {
        consumer_key: '..',
        consumer_secret: '..',
    },
    headers: {
        Accept: 'application/json'
    },
}, function (err, res, body) {
    console.log(body);
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61458960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档