You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在React与Node.js中基于Axios实现OAuth1.0 GET请求

解决方案

你当前的代码是按照OAuth2.0客户端凭证模式编写的,和需求的OAuth 1.0 PlainText签名认证不匹配,需要借助专门的OAuth 1.0库来生成符合要求的请求头。

步骤1:安装依赖

需要安装axios和oauth-1.0a(用于生成OAuth 1.0签名):

npm install axios oauth-1.0a
# 或使用yarn
yarn add axios oauth-1.0a

步骤2:编写请求代码

以下是适配需求的完整代码:

import axios from 'axios';
import OAuth from 'oauth-1.0a';

// 配置OAuth 1.0参数
const oauth = OAuth({
  consumer: {
    key: 'CK', // 你的ConsumerKey
    secret: 'CS' // 你的ConsumerSecret
  },
  signature_method: 'PLAINTEXT', // 指定签名方法为PlainText
  hash_function: (base_string, key) => key // PlainText模式下直接返回密钥组合
});

// 定义请求参数
const requestData = {
  url: 'https://api.tmsandbox.co.nz/v1/Search/General.xml',
  method: 'GET',
  params: {
    category: '0124-0424-',
    condition: 'Used',
    sort_order: 'ExpiryDesc'
  }
};

// 生成Authorization头
const token = {
  key: 'AT', // 你的AccessToken
  secret: 'TS' // 你的TokenSecret
};
const headers = oauth.toHeader(oauth.authorize(requestData, token));

// 发送GET请求
axios(requestData.url, {
  method: requestData.method,
  params: requestData.params,
  headers: headers
})
.then(response => {
  console.log('请求成功:', response.data);
})
.catch(error => {
  console.error('请求失败:', error);
});

关键说明

  • OAuth 1.0 PlainText签名模式下,签名会直接使用ConsumerSecret&TokenSecret的组合,不需要复杂的哈希计算,所以hash_function直接返回密钥即可。
  • 必须将请求的URL、方法、参数都传入oauth.authorize()方法,才能生成正确的Authorization头。
  • 如果是在Node.js环境中使用,无需额外处理CORS;如果是React前端直接请求,需要确保目标API允许跨域,或者通过Node.js后端做请求代理。

内容的提问来源于stack exchange,提问作者Greg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:01:16