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

React Native中如何获取Sensitive Info Keychain存储的敏感信息值?

问题分析与解决

核心问题

你直接调用getToken()拿到的是Promise对象(就是你看到的{"_U": 0, "_V": 0, "_W": null, "_X": null}),因为async函数默认返回Promise,必须用await等待它完成才能拿到实际的token值。而函数内部能成功,就是因为你用了await getToken()。

外部获取并使用token的方法

异步操作没法直接同步拿到结果,得用异步方式处理,给你几种实用方案:

1. 立即执行异步函数(IIFE)

如果是在普通JS文件里,用立即执行的异步函数包裹逻辑:

// 直接在外部执行
(async () => {
  const token = await getToken();
  console.log(token); // 这里能拿到真实的token值
  // 把需要用token的代码写在这里,比如调用API、赋值给变量等
})();

2. React组件中用useEffect(结合你的场景)

看你代码里有setIsLike,应该是React组件。可以用useState存token,useEffect异步获取,等token加载完成后再执行依赖它的逻辑:

import { useEffect, useState } from 'react';

function YourComponent() {
  const [token, setToken] = useState(null);
  const [isLike, setIsLike] = useState(false);

  // 组件挂载时获取token
  useEffect(() => {
    const fetchToken = async () => {
      const storedToken = await getToken();
      setToken(storedToken);
    };
    fetchToken();
  }, []);

  // 当token有值时,执行点赞检查逻辑
  useEffect(() => {
    if (!token) return; // token没加载完就不执行

    const checkIsLiked = async () => {
      try {
        const res = await axios.get(url, {
          headers: {
            'Content-Type': 'application/json',
            Authorization: `token ${JSON.parse(token)}`,
          },
        });
        setIsLike(res.data);
      } catch (error) {
        console.error(error);
      }
    };

    checkIsLiked();
  }, [token]);

  return <div>{isLike ? '已点赞' : '未点赞'}</div>;
}

3. 优化你的checkIsLiked函数

你原来的函数里混用了await和.then,可以改成全await写法,更清晰:

const checkIsLiked = async () => {
  try {
    const token = await getToken();
    const res = await axios.get(url, {
      headers: {
        'Content-Type': 'application/json',
        Authorization: `token ${JSON.parse(token)}`,
      },
    });
    setIsLike(res.data);
  } catch (error) {
    console.error(error);
  }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:05:23