今天搞了下微信受权, 总结了下微信的受权规则与步骤mysql
先来几个关键字sql
Openid 微信ip(属于惟一指向公众号的id)数据库
redirect_uri 受权回调地址api
State 回调地址带参数缓存
Appid 公众号的惟一标识微信
access_token 受权凭证app
Code 填写第一步获取的code参数nosql
微信受权有分两种受权工具
隐性受权 snsapi_base (只拉取微信openid)spa
OK,这些是玩受权的几个重要的参数.下面看下步骤如何实现
第一步: 用户赞成受权,获取code
上面有几个参数, 须要解释下,
大写的参数, 是要大家去填写的
APPID : 公众号里面的appid 在开发者工具那里能看到
REDIRECT_URL: 回调地址 ( 受权以后该访问哪一个地址)
STATE : 参数, 经过域名方式传过来的参数, 可接受
SCOPE: 受权方式( 明性受权和隐形受权)
这个完成了以后 他会跳到你的”回调地址”并返回 code值 和state值. ( )
这时候 要执行第二个步骤: (经过code获取aesccos_token和openid)
获取code后,请求如下连接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
地址如上, 依然要把参数贴上。
可是要记得把CODE贴上去
经过这一步能获取到asccos_token
!!!这时候会要注意一个规则
access_token 一天只能访问2000次. 过了2000次以后会有报错40001.要到次日早上才能从新的刷新.
不过这个能够用一个缓存access_token的方法来使用, 由于access_token方法的缓存时间是7200秒
这时候咱们能够把他缓存在mysql或者nosql中, 用于在下次缓存的时候直接调用access_token, 这样就能缓解当天2000次调用的规则.
使用方法以下:
获取第二步的refresh_token后,请求如下连接获取access_token: https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
经过REFRESH_TOKEN 来获取一个长期能使用的access_token,而后缓存在数据库里面,用于下次调用,
由于只有7200秒, 他会有无效,报错是40003. 这时候咱们能够用经过一个检测方法来判断这个40003报错, 而后进行下一次的ACCESS_TOKEN进行下次缓存
http:GET(请使用https协议)https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
经过OPENID + ACCESS_TOKEN 来验证