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

React Native使用Axios调用Reddit API POST请求返回403错误如何解决

问题核心原因

你遇到的403错误完全是Axios请求的传参写法错误导致的,和Reddit接口权限、令牌有效性无关,具体问题如下:

  1. Axios POST方法参数顺序错误
    Axios.post的合法调用格式为axios.post(请求URL, 请求体数据, 配置对象),其中headers、URL参数等配置都需要放到第三个参数的配置对象中。你现在的写法axios.post(url, Headers, Params, Body)把四个参数按错误顺序传入,导致后端接收到的请求体、头信息完全不符合预期。
  2. Content-Type与参数格式不匹配
    Reddit的subscribe接口要求所有参数以application/x-www-form-urlencoded格式提交,你当前设置的Content-Type: application/json以及将参数拆分为Params、Body两部分的写法,都不符合接口要求。
  3. 冗余的Promise嵌套
    你已经使用了async/await语法,不需要再额外搭配.then回调,属于不必要的混用写法。

修正后的代码

subscribe: async function subscribe(action, sub, modhash) {
  try {
    const token = await this.getAccessToken();
    console.log('token: ' + token)
    // 所有接口要求参数统一编码为表单格式
    const requestBody = new URLSearchParams({
      action: action,
      sr_name: sub,
      api_type: 'json',
      extension: 'json'
    })

    const response = await axios.post(
      'https://oauth.reddit.com/api/subscribe',
      requestBody,
      {
        headers: {
          'Authorization': 'Bearer ' + token,
          'Content-Type': 'application/x-www-form-urlencoded',
          'X-Modhash': modhash
        }
      }
    )

    console.log('sub: ' + JSON.stringify(response.data));
    console.log("Subbed to " + sub)
  } catch (error) {
    throw 'Could not sub: ' + error
  }
},

使用URLSearchParams编码参数会自动匹配表单格式,和你Postman中发送的请求格式完全一致,即可正常调用接口完成订阅。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:06:05