Access_Token: 基于Token的认证模式,允许应用访问一个资源 API,利用Access_Token调用微信相关的 API(有时效性,有效期是7200秒(两小时),每次申请的token都是随机的157位字符串)
Access_Token详解与使用流程:
相关文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
一种是普通的Access_Token(立于公众号):
这种Access_Token,是公众号的全局唯一接口调用凭据,有效时间两个小时,公众号调用各接口时都需使用Access_Token,一个公众号每天获取它的次数上限是2000次
官方建议:
公众号开发者使用中控服务器统一限制IP调用,获取,(主动)刷新Access_Token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突
导致Access_Token覆盖而影响业务
PS:刷新Access_Token后公众平台后台会保证在5分钟内,新老access_token都可用,保证第三方业务的平滑过渡
接口:
【GET】 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
响应:{"access_token":"ACCESS_TOKEN","expires_in":7200}
使用举例:
创建公众号菜单API接口:【POST】 https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
另一种是网页授权Access_Token:
通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息
流程:
第一步:用户登录公众号进入设置,需要配置网页授权的跳转域名,(填写域名,下载txt,放于域名根目录,完成)
第二步:用户同意授权,获取code
常用的参数:
redirect_uri:重定向页面路径(注意:必须现在公众号号管理页设置网页域名,如果你是测试号,下边会后配置的地方以供测试,不配置将会返回redirect_uri域名与后台配置不一致)
state:重定向后会带上 state 参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节(白话就是你想在跳转路径后加参数,那就付给state参数,跳转后获取state参数即可)
scope:该字段表示授权作用域,snsapi_base吧(不弹出授权页面,直接跳转,只能获取用户openid,也就是常说的静默授权),snsapi_userinfo (弹出授权页面,可通过 openid 拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息,也就是非静默授权或显式授权。注意:微信调整了开发者在网页中在不规范使用发起 snsapi_userinfo 网页授权时,微信将默认打开网页快照页模式进行基础浏览。 能力调整将于 2022年7月12日24时生效,此时会有用户扫码进入授权后页面时获取的用户openId为虚拟openId,对后面一些业务会有影响)
第三步:通过code换取网页授权access_token
返回的Access_Token既是网页授权的Access_Token
里面的refresh_token(refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权,这个参数下一步会用到)
第四步:刷新access_token(如果需要)
参数中REFRESH_TOKEN,在上一步可获取到
第五步:拉取用户信息(需 scope 为 snsapi_userinfo)
apiurl: https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
(这里有坑了。自2022年7月12日24时,实际上提前了好几个小时,到账前面openId为虚拟openId,后面查的用户昵称“微信用户”,头像为一张白的默认头)
校验Access_Token有没有混淆:
接口:【GET】 https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
最后吐槽一下发帖的排版,咋看咋别扭.....
您好,我想问一下,有没有校验token失效的 api 我公司业务现在经常导致 测试环境和生产环境的token互相覆盖
关于快照导致OpenId 串号您有碰到吗