首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axios和Oauth1.0 -“状态: 400,不良请求”

Axios和Oauth1.0 -“状态: 400,不良请求”
EN

Stack Overflow用户
提问于 2021-08-09 21:08:45
回答 1查看 484关注 0票数 0

我是关于Nodejs和所有与Node相关的模块的新手。我一直试图使用axios发送Oauth1.0自动化签名,但我得到了:响应:{ status: 400,statusText:‘坏请求’,……}

代码语言:javascript
复制
import { BASE_URL } from '../../../config/config.js';
import axios from 'axios';
import status from 'http-status';
import OAuth from 'oauth-1.0a';
import { createHmac } from 'crypto';
import dotenv from 'dotenv';

dotenv.config();

const CONSUMERKEY = process.env.consumer_key;
const CONSUMERSECRET = process.env.consumer_secret;
const TOKENKEY = process.env.access_token;
const TOKENSECRET = process.env.token_secret;

export const oauth = OAuth({
    consumer: {
        key: CONSUMERKEY,
        secret: CONSUMERSECRET,
    },
    signature_method: 'HMAC-SHA1',
    hash_function(base_string, key) {
        return createHmac('sha1', key)
            .update(base_string)
            .digest('base64')
    },
})

export const token = {
    key: TOKENKEY,
    secret: TOKENSECRET,
}

const doRequest = async (query) => {

    const request_data = {
        url: `${BASE_URL}`,
        method: 'GET',
        params: { q: `${query}` },
    };

    const authHeader = oauth.toHeader(oauth.authorize(request_data, token));
    
    return await axios.get(request_data.url, request_data.params, { headers: authHeader });

};

const searchU = async (term) => {

    return await doRequest(`${term}`);

};


export const userS = async (req, res, next) => {
    try {
        const { query } = req;
        
        const { data } = await searchU(query.q);
        
        const string = JSON.stringify(data);

        const Rs = JSON.parse(string);

        const response = {
            code: 1,
            message: 'sucess',
            response: Rs
        };

        res.status(status.OK).send(response);

    } catch (error) {

        next(error);

        if (error.response){

            console.log("Response: ");
            console.log(error.response);
            
        } else if(error.request){
            
            console.log("Request: ");
            console.log(error.request)
            
        } else if(error.message){
            
            console.log("Message: ");
            console.log(error.message)
            
        }
        

    }
    
};

我也一直在尝试在这个岗位上:的解决方案,但我没有办法让这件事成功,不知道我能做什么.

当我尝试下面的代码(见下面)时,使用Request模块(这是不推荐的)很好,但是我真的需要使用Axios.

代码语言:javascript
复制
const request_data = {
    url: `${BASE_URL}`,
    method: 'GET',
    params: { q: `${query}` },
};

const authHeader = oauth.toHeader(oauth.authorize(request_data, token));

request(
  {
      url: request_data.url,
      method: request_data.method,
      form: request_data.params,
      headers: authHeader,
  },
  function(error, response, body) {
      console.log(JSON.parse(body));
  }
)

对我在这件事上做错了什么有什么想法吗?非常感谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-10 19:37:46

有关Axios的Request,请参阅以下链接。我相信您需要在axios.get()中的头后面有查询参数

Axios请求Config

试一试,看看情况如何:-

代码语言:javascript
复制
return await axios.get(request_data.url, { headers: authHeader }, request_data.params);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68718567

复制
相关文章

相似问题

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