网络宝典
第二套高阶模板 · 更大气的阅读体验

API调用时怎么拿到token?手把手教你几种常见方法

发布时间:2026-02-10 15:31:15 阅读:5 次

你写了个小工具想对接天气接口,结果一发请求就返回 401 Unauthorized;或者调试微信公众号后台,填了AppID和AppSecret,却卡在“获取access_token”这一步——别急,这不是你代码写错了,大概率是 token 没拿对、没拿稳。

token 是啥?为啥每次调 API 都要它?

简单说,token 就是服务器发给你的临时‘门禁卡’。它不等于密码,但能证明‘此刻是你本人在操作’。很多平台(比如微博开放平台、阿里云API、GitHub REST API)都要求你在请求头里带上 Authorization: Bearer xxxxxx,这个 xxxxxx 就是 token。

常见获取方式,照着做就行

1. 用户授权后换 token(OAuth 2.0)
比如你想让自己的小程序读取用户微信头像,得先跳转到微信授权页,用户点同意后,你会拿到一个 code,再拿这个 code 去换 token:

POST https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

返回类似:

{"access_token":"ACCESS_TOKEN","expires_in":7200,"refresh_token":"REFRESH_TOKEN","openid":"OPENID","scope":"snsapi_userinfo"}

注意:access_token 通常 2 小时过期,别硬存本地反复用,下次请求前先检查是否失效。

2. 直接用账号密钥申请(Client Credentials)
有些内部系统或企业 API(如钉钉机器人、飞书自建应用),不需要用户授权,直接用开发者凭证换取 token:

POST https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal/
{
  "app_id": "cli_xxx",
  "app_secret": "xxx"
}

返回里带 app_access_tokenexpire(秒数),记得缓存并定时刷新。

3. 简单的固定 token(测试用)
像一些轻量级服务(如 JSONPlaceholder 的某些测试接口、部分爬虫代理平台),直接在注册后台生成一个长期 token,复制粘贴进请求头就行:

curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." https://api.example.com/data

这种适合练手或内网调试,千万别用在正式项目里——泄露就等于裸奔。

容易踩的坑

忘记加请求头前缀:写成 Authorization: abc123 是错的,得是 Authorization: Bearer abc123
把 refresh_token 当 access_token 用:它们用途不同,别混;
token 存在前端 localStorage 里:公开暴露,谁都能偷走,敏感 token 一定要由后端托管;
没处理过期重试逻辑:比如第一次请求返回 401,就该自动刷新 token 再重发一次,而不是直接报错给用户。

token 不神秘,就是个带时限的凭证。摸清平台文档里的流程图,配好参数发个请求,基本就能拿下。多试两次,比看十篇理论还管用。