网络编程 
首页 > 网络编程 > 浏览文章

thinkjs微信中控之微信鉴权登陆的实现代码

(编辑:jimmy 日期: 2025/5/13 浏览:3 次 )

前言

上一篇文章大概写了一下如何搭一个微信中控服务: 【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">结尾

    需要注意的是,公众号的后台需要配置好以下信息。

    1. JS接口安全域名:就是前端的访问域名。
    2. 网页授权域名:中控API域名。
    3. ip白名单:中控的ip地址。

    否则是没有权限鉴权的。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    上一篇:JavaScript:ES2019 的新特性(译)
    下一篇:Vue指令之 v-cloak、v-text、v-html实例详解
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?