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

React Native向Django发token时Authorization头显示[object Object]问题

问题根因分析
  • getAccessToken 函数返回值异常:你定义了async函数,但内部没有返回Auth.currentSession()的执行结果,then回调中返回的jwtToken没有被外层函数传递出去,导致该函数返回的Promise最终resolve的值为undefined。
  • 异步逻辑未正确等待:首次调用getAccessToken()时没有等待异步执行完成,直接将Promise对象拼接进Authorization头,Promise调用toString()的结果就是[object Object],因此Django侧收到的请求头值为Bearer [object Object]。
修复方案

第一步:修复getAccessToken函数

统一用async/await语法简化异步逻辑,确保返回正确的jwtToken:

import {Auth} from 'aws-amplify';

export async function getAccessToken() {
    try {
        // 不需要获取currentUser的话可以删掉这行
        await Auth.currentAuthenticatedUser();
        const session = await Auth.currentSession();
        const accessToken = session.getAccessToken();
        const jwtToken = accessToken.jwtToken;
        console.log(jwtToken)
        return jwtToken;
    } catch (error) {
        console.log('登录态获取错误:', error);
        // 抛出错误让外层逻辑捕获处理
        throw error;
    }
}

第二步:修复getPosts的异步调用逻辑

用async/await写法保证拿到token后再发起请求:

const getPosts = async () => {
  try {
    // 等待异步获取token完成
    const token = await getAccessToken();
    const config = {
      headers: { Authorization: `Bearer ${token}` }
    };
    const response = await axios.get(`${url}/posts`, config);
    console.log(response)
    setData(response.data);
  } catch (error) {
    console.log(JSON.stringify(error));
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:57:02