近年来,企业微信成为企业内部沟通和管理的重要工具。在前端开发中,使用企业微信登录的需求越来越常见。为了满足这一需求,开发人员推出了 egg-passport-workweixin 这个 npm 包。本文将详细讲解该 npm 包的使用方法。
什么是 egg-passport-workweixin
egg-passport-workweixin 是 egg.js 框架中 passport.js 的一个插件,它可以实现企业微信登录功能。使用 egg-passport-workweixin,前端开发人员能够简单地集成企业微信登录,实现方便快捷的用户登录、授权等功能。
使用 egg-passport-workweixin 前,先确保已经使用 egg.js 创建了项目,然后通过 npm 安装 egg-passport-workweixin:
$ npm install egg-passport-workweixin
egg-passport-workweixin 的配置方法
在 egg.js 的 config.default.js 中配置 egg-passport-workweixin
在 egg.js 项目的 config.default.js 文件添加以下内容:
exports.passportWorkweixin = { key: 'your oauth key', secret: 'your oauth secret', agentid: 'your oauth agentid', callbackURL: '/passport/workwx/callback', passReqToCallback: true, // 默认为 false,设置为 true 时,可以通过 workwxVerifyCallback 的 req 参数拿到请求上下文 };
key
和secret
分别为 企业微信开放平台上应用的corpID
和secret
。agentid
为企业微信应用的agentid
,用于设置授权作用域和展示菜单。callbackURL
认证回调地址。passReqToCallback
决定了参数列表紧随的回调函数是否用请求(req)作为第一个参数的参数。如果设置为 true,当用户登录成功后,将额外地传递一个 req 参数到回调函数中。
配置 egg-passport 和 egg-passport-workweixin
在 egg.js 项目中的 config/plugin.js 中配置 egg-passport 和 egg-passport-workweixin:
-- -------------------- ---- ------- ---------------- - - ------- ----- -------- --------------- -- -------------------------- - - ------- ----- -------- -------------------------- --
在路由中注册 egg-passport
在 egg.js 项目的 router.js 中注册 egg-passport 的 router:
app.passport.mount('workwx');
在 Controller 中添加方法
在 Controller 中添加方法:
-- -------------------- ---- ------- ----- ------------- - ----- ---------------------------------- - ---------- ------------------- --- - ----- ---------------- - ----- ---- - -------------- ----- ------------------------------------- - ---- --- -
示例代码
下面是 egg.js 项目的完整示例:
-- -------------------- ---- ------- -- ------------------------ ------------ - ------------ -------------------------- - - ---- -------------- ------- -------------- -------- -------------- ------------ ---------------------------- ------------------ ----- -- -- ---------------- ---------------- - - ------- ----- -------- --------------- -- -------------------------- - - ------- ----- -------- -------------------------- -- -- ------------- -------------- - --- -- - ----------------------------- ----------------- -------------------- ------------------------------------ ----------------------- -- -- ---------------------- ----- ---------- - -------------------------- ----- -------------- ------- ---------- - ----- ------------- - ----- ---------------------------------- - ---------- ------------------- --- - ----- ---------------- - ----- ---- - -------------- ----- ------------------------------------- - ---- --- - - -------------- - ---------------
在 Controller 文件夹下创建 workwx_login.nj 文件,在视图中添加登录链接:
<html> <head></head> <body> <a href="{{loginLink}}">企业微信登录</a> </body> </html>
在 Controller 文件夹下创建 workwx_callback.nj 文件,在视图中添加登录成功后的页面:
<html> <head></head> <body> <h1>欢迎,{{user.nickname}}</h1> <p>userid: {{user.userid}}</p> <p>name: {{user.name}}</p> </body> </html>
最终效果为:
- 访问 localhost:7001/login,点击“企业微信登录”,跳转到企业微信认证页面。
- 在认证页面中输入企业微信账号和密码,授权后会自动回调到之前设定的callbackURL。
- 回调接口会将用户信息传到 callback 函数中,在 workwxCallback 方法内可以获取用户信息并渲染页面展示。
- 页面展示欢迎语及用户信息。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055f3781e8991b448dcc73