前言
上一篇文章大概写了一下如何搭一个微信中控服务: 【thinkjs搭建微信中控服务】 。
接下来这篇,专门写一下如何在此基础上扩展出来一个比较好用的微信鉴权登陆的方案。
由于这一段的逻辑着实有点绕,所以就单独拿出来写了。
有时候,调用方甚至可以通过这个方案,进行多公众号openid的之间的关联。
官方说明
开发文档
微信文档地址:传送门
鉴权逻辑
- 前端跳转到以下url,重定向或者代码跳转都可以:https://open.weixin.qq.com/connect/oauth2/authorize"color: #ff0000">中控逻辑
第一步:页面跳转至中控API
业务调用方会有自己的登陆逻辑,只需要获取到当前调用接口的用户的openid,然后再进行接下来的业务逻辑即可。
前端调用业务接口的时候,如果服务端发现当前访问用户没有登陆状态,就会告诉前端需要鉴权,并且把需要跳转的中控API链接响应给前端。
然后前端就开始往中控的API链接跳转。
第二步:中控重定向到微信API
相关代码
// 接口 - 鉴权获取code async go_authAction() { let that = this; let {back, serve = ''} = that.get(); if (think.isEmpty(back)) { return that.json({code: 1, msg: '参数不正确'}) } let newBack = encodeURIComponent(back); let redirectUri = `${baseHost}/api/open/wx/login_wechat"htmlcode">
async login_wechatAction() { let that = this; let {code, back, serve = ''} = that.get(); if (think.isEmpty(code) || think.isEmpty(back)) { return that.json({code: 1, msg: '参数不正确'}) } let newBack = encodeURIComponent(back); let apiWxController = that.controller('private/wx'); let openid = await that._getOpenIdByAuthCode(that.wxConfig.id, code); let backUrl = `${serve}"color: #ff0000">结尾
需要注意的是,公众号的后台需要配置好以下信息。
- JS接口安全域名:就是前端的访问域名。
- 网页授权域名:中控API域名。
- ip白名单:中控的ip地址。
否则是没有权限鉴权的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
最新资源