微信小程序的access_token
·
AppID 和 AppSecret
AppID是微信平台为每个小程序分配的唯一标识符,类似于身份证号。在微信公众平台注册小程序账号后,系统自动分配一个 AppID,该ID不可修改。
AppSecret是账号使用后台API接口的小程序密钥,和AppID是对应的。生成AppSecret后,需妥善保管。
可以在微信开发者平台上管理AppSecret:

可见,对AppSecret只有“重置”和“冻结”两个选项,而无法查看已生成的AppSecret。所以,在生成AppSecret之后,需要找个地方妥善保管。一旦丢失,只能重新生成,而之前的AppSecret会失效。
access_token
AppSecret是永久性的,而access_token是调用微信API的临时令牌,有效期通常为 2小时(7200秒)。它的作用是替代AppSecret参与部分敏感操作,降低直接暴露AppSecret的风险。
下面是微信官方文档里对access_token的介绍:
- access_token 的存储至少要保留 512 个字符空间;
- access_token 的有效期目前为 2 个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效;
- 建议开发者使用中控服务器统一获取和刷新 access_token,其他业务逻辑服务器所使用的 access_token 均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致 access_token 覆盖而影响业务;
- access_token 的有效期通过返回的 expires_in 来传达,目前是7200秒之内的值,中控服务器需要根据这个有效时间提前去刷新。在刷新过程中,中控服务器可对外继续输出的老 access_token,此时公众平台后台会保证在5分钟内,新老 access_token 都可用,这保证了第三方业务的平滑过渡;
- access_token 的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新 access_token 的接口,这样便于业务服务器在API调用获知 access_token 已超时的情况下,可以触发 access_token 的刷新流程。
获取access_token
可以通过AppID和AppSecret来获取access_token。
具体说来,通过如下 GET 请求:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
请求参数:
grant_type:填写client_credentialappid:小程序唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态)secret:小程序唯一凭证密钥,即 AppSecret,获取方式同appid
正常情况下,会返回如下JSON数据:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
返回参数:
access_token:获取到的凭证expires_in:凭证有效时间,单位:秒。目前是7200秒之内的值。
下面是不同平台下的例子:
- Linux:
$ curl -w "%{http_code}\n" --silent -XGET "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret" | jq .
{
"access_token": "92_KgXBkx9ViEFC5UOhts83zwt4FbUJHXvULiTF9iNHMnim0xYFI6iMaL8g9s3Oho9b_T7h_V79kuLIParTxIHE6kjrQ0iUhOcxo9mWK9FNAxD5m27Mf_fxmtibOPMXKLbACAERS",
"expires_in": 7200
}
200
- Windows(PowerShell +
C:\windows\system32\curl.exe)
curl -w "%{http_code}\n" --silent -X GET "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret" | jq .
{
"access_token": "92_pQv9uitGzm71sjVRiwUNkjNWK7Wc2bLFlXiQODOp0egiDIQ6_rJGzFXerjoTebE0ne0H7kuuc4opC0zot1uwh3MdGGfzQQC2sqjDU6hDzTKlR4w3-Zhf2emQWJoDDCcAFAYYX",
"expires_in": 7200
}
200
- Windows (CMD +
C:\windows\system32\curl.exe)
curl -w "%{http_code}\n" --silent -X GET "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%appid%&secret=%appsecret%" | jq .
{
"access_token": "92_hHC0nxLvOpR4ETIyUtjGZb2WBIAOKyWEBxLd9xaKi1OobUSugpbZfXoHdgUWzzT25f0uUVom7cRqWPCjhXhjulXhKVZgjaS33QOEWpFpyOSN53SCJjbViPgygZwTKGfAEAWNJ",
"expires_in": 7200
}
200
- Windows (PowerShell +
Invoke-WebRequest)
curl -Method GET "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"
StatusCode : 200
StatusDescription : OK
Content : {"access_token":"92_HFI5SZICwY6qJIBA3V68WaQjWJRsLkt48wU6pLejpq1zKfMYQ9xyQPeoAfOw582JXTwZy-zjiQrSE_RamuEARjdA_Cry1GKKoSSqI-wezOcnkfVF1B-ih6kb_FgGDLbAAABYG","ex
pires_in":7200}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 173
Content-Type: application/json; encoding=utf-8
Date: Fri, 06 Jun 2025 02:40:03 GMT
{"access_token":"92_HFI5SZICwY6qJIBA3V68WaQjWJRsLkt...
Forms : {}
Headers : {[Connection, keep-alive], [Content-Length, 173], [Content-Type, application/json; encoding=utf-8], [Date, Fri, 06 Jun 2025 02:40:03 GMT]}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 173
如果发生错误,会返回 errcode 和 errmsg 。以Linux为例:
$ curl -w "%{http_code}\n" --silent -XGET "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret" | jq .
{
"errcode": 40125,
"errmsg": "invalid appsecret rid: 68425e48-72970e30-0b34ffc1"
}
200
参考
https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.htmlhttps://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
更多推荐
所有评论(0)