十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
前言
创新互联建站于2013年成立,是专业互联网技术服务公司,拥有项目成都网站建设、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元麟游做网站,已为上家服务,为麟游各地企业和个人服务,联系电话:18980820575上一篇文章大概写了一下如何搭一个微信中控服务: 【thinkjs搭建微信中控服务】 。
接下来这篇,专门写一下如何在此基础上扩展出来一个比较好用的微信鉴权登陆的方案。
由于这一段的逻辑着实有点绕,所以就单独拿出来写了。
有时候,调用方甚至可以通过这个方案,进行多公众号openid的之间的关联。
官方说明
开发文档
微信文档地址:传送门
鉴权逻辑
拿到openid之后,理论上鉴权的逻辑就算完成了。
开发者可以继续用openid和access_token去获取用户信息;或者进行一些其他的业务流程。
具体的参数说明看微信的官方文档就可以了。
中控逻辑
第一步:页面跳转至中控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?${encodeURIComponent(`back=${newBack}&wxid=${that.wxConfig.id}&serve=${serve}`)}`; let url = `https://open.weixin.qq.com/connect/oauth3/authorize?appid=${that.wxConfig.appid}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect` that.redirect(url); }