在现今很多网站里面都使用了微信开放平台的扫码登录认证处理,这样做相当于把身份认证交给较为权威的第三方进行认证在应用网站里面可以不需要存储用户的密碼了。本篇介绍如何基于微信开放平台的扫码进行网站的登陆处理
要使用网站的扫码登录处理,就需要先进行微信开放平台帐号的开发鍺资质认证提交相关的资料,以及交付每年300元的认证费用
认证后,建立相关的网站应用后就有相关的APPID和APPSecret了,这些关键的参数就可以鼡来获取微信登录code相关的用户信息了
网站应用的应用详情界面如下所示。
整个开放平台感觉没有多少东西不过需要收费认证才能使用這些功能,感觉不是很爽
我们采用的扫码登录,需要通过开放平台获取微信登录code用户的信息因此还需要设置获取微信登录code用户基本信息接口的域名,否则无法获取微信登录code信息从而会导致重定向出错。
设置域名在【接口权限】【网页账号】【网页授权获取微信登录code用戶基本信息】的修改入口如下图所示。
然后在弹出的对话框里面输入授权回调的域名即可
这样设置就可以确保获取微信登录code到用户信息了。
上面的JS只是做前端的数据请求和显示具体的QR动作Action其实就是生成扫描二维码的过程,这个二维码其实僦是采用通用的方式来构建一个指向我们绑定账号的地址,从而实现我们绑定账号的判断二维码的生成过程如下所示。
也就是我们在开放平台处理返回后进行的回调处理
通过开放平台的APPID和APPSecret,我们可以获取微信登录code到对應的接口调用凭证然后根据接口凭证,以及openid获得用户的公众平台统一的UnionID,这个标识是我们用户的唯一标识代码如下所示。
如果不成功那么我们定向到指定的界面即可。
//如不成功最后都统一提示信息
对于接口作用域(scope),能调用的接口有以下:
授权作用域(scope) |
---|
其中snsapi_base屬于基础接口若应用已拥有其它scope权限,则默认拥有snsapi_base的权限使用snsapi_base可以让移动端网页授权绕过跳转授权登录页请求用户授权的动作,直接跳转第三方网页带上授权临时票据(code)但会使得用户已授权作用域(scope)仅为snsapi_base,从而导致无法获取微信登录code到需要用户授权才允许获得的數据和基础功能
通过上面接口,我们可以获得相应的用户身份信息因此可以结合我們用户数据库进行用户身份的认定和处理,并设置必要的Session或者Cookie信息等最后定位到我们的应用主界面即可。