这里介绍H5微信授权登录,采用了微信公众号授权原理,是oauth2的登录授权方式,简单的来讲,就是用户通过手机微信确认登录之后,微信方会返回一个授权码code给回第三方(接入方),这个授权码code一次有效期,且有效时间比较短;第三方通过此code去调用微信接口获取token,token的有效期也比较短;第三步通过token再去调用微信开发平台接口,获取微信个人用户信息(昵称、头像地址、openid、unionid、地区……)。
申请测试账号:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;
前提先关注微信测试公众号,然后即可以在微信开发者工具的公众号网页调试模式,地址栏进行输入授权登录
参考链接(请在微信客户端中打开此链接体验): scope为snsapi_base https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=http://192.168.123.36:10086/index&response_type=code&scope=snsapi_base&state=123#wechat_redirect scope为snsapi_userinfo https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http://192.168.123.36:10086/index&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
关于特殊场景下的静默授权
1、上面已经提到,对于以snsapi_base为scope的网页授权,就静默授权的,用户无感知;
2、对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知。
具体而言,网页授权流程分为四步:
1、引导用户进入授权页面同意授权,获取code
2、通过code换取网页授权access_token(与基础支持中的access_token不同)
3、如果需要,开发者可以刷新网页授权access_token,避免过期
4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)