React项目使用GitHub Token调用API出现401未授权错误,重生成Token仍无效
401错误常见原因及修复方案
- Authorization请求头格式错误
GitHub API要求个人访问令牌(PAT)的授权头格式为Authorization: token 你的PAT值,你当前的写法有两种可能的问题:- 若你.env.local里的
REACT_APP_GITHUB_TOKEN值只填了PAT字符串没有前缀token,那么请求头缺少必填前缀,直接会被GitHub判定为未授权 - 若你已经在.env里加了
token前缀,注意你当前代码里直接读取环境变量赋值给headers,没有做多余处理,是符合要求的,但要检查.env配置是否有冗余字符
- 若你.env.local里的
- .env.local配置格式错误
- React读取.env文件时,不会自动去除包裹值的单引号/双引号,你写的
REACT_APP_GITHUB_TOKEN='token '会把单引号也读取到变量里,最终请求头变成Authorization: 'token xxx',带了多余的单引号导致校验失败 - 你配置的值末尾多了一个空格,也会导致PAT校验不通过
修复方案:把.env.local的配置改为REACT_APP_GITHUB_TOKEN=token 你的实际PAT值,不要加引号,也不要留末尾空格
- React读取.env文件时,不会自动去除包裹值的单引号/双引号,你写的
- 修改.env文件后未重启开发服务器
React的环境变量只会在项目启动时读取一次,修改.env.local之后必须重启npm start/yarn start进程,新的配置才会生效,很多人重新生成Token后忘了重启,导致配置一直不生效 - PAT权限不足或已过期/被吊销
- 新生成的PAT没有勾选
public_repo等必要权限,访问公开用户数据至少需要勾选public_repo权限 - 如果你开启了PAT过期时间,确认当前Token未过期,也没有被GitHub后台手动吊销
- 新生成的PAT没有勾选
- 缺少GitHub API版本要求的必填头
最新的GitHub API要求请求必须携带Accept: application/vnd.github+json头,以及指定API版本的X-GitHub-Api-Version: 2022-11-28头,缺少的话也可能触发授权校验失败,你可以在axios创建的时候补全这两个头:
const github = axios.create({ baseURL: "https://api.github.com", timeout: 1000, headers: { Authorization: process.env.REACT_APP_GITHUB_TOKEN, Accept: "application/vnd.github+json", "X-GitHub-Api-Version": "2022-11-28" }, });
内容的提问来源于stack exchange,提问作者Sambit
相关产品推荐
相关产品推荐

