Skip to content

企业微信网页应用题接入前端处理

✍️天畅🕐2024-07-03

写作背景

公司使用的办公软件是企业微信,想要将一些内部内容整合到企业微信中,适配企业微信的架构,这样可以直接从企业微信进入并验证身份。博主在进行开发时遇到了一些困难,最后也得到了一些收获分享给大家。

在企业微信中添加应用

  1. 管理员进入企业微信后台登录 企业微信后台链接(opens new window)
  2. 点击企业应用--自建应用--创建应用
  3. 添加应用 logo 和填写应用名字,logo 一般用 150*150 的
  4. 这样在企业微信工作台就可以看到应用了

注意添加应用后需要配置可信域名,我们配置的应用首页必须位于该域名下,具体规则如下所示:wecom1

前端实现接入

企业微信官方文档如图所示:

wecom2

简单来说就是:

  1. 构造 OAuth2 链接引导用户到企微服务授权页,可选择静默授权或手动授权(手动授权可获取成员的详细信息,包含头像、二维码等敏感信息)。
  2. 用户返回回调地址,使用企业微信提供的 code 与 state 调用服务端接口,接口返回 token 用来定义用户登录状态。
  3. 使用 token 请求服务端接口,获取数据。

但是企微提供的文档并不清晰,很容易误导开发者将构造的 OAuth2 链接配置到应用首页,这样很容易导致获取用户信息的 code 泄露,并且此应用将可以在外部浏览器中打开。所以建议将第一步放在前端代码中实现,以防止可能造成的安全问题,并且可以使用户配置的应用首页就是具体网页地址,而不用将构造链接放到首页。关键代码:

wecom3

通过上述代码可以获取企微反回的 code, 但是根据企业微信文档建议我们消费 code 用以获取数据,但是这样需要我们每次刷新页面都需要重新获取 code,实际上并没有做到传统意义上的登录,只是每次使用 code 交换数据,所以博主建议在这里可以使用 code 从服务端交换一个自定义的 token,从而帮助实现登陆状态。关键代码如下:

code1

处理代码可以放在 callback 页面,完成处理后再重定向到源页面,从而实现用户无感登录。

企业微信客户端 web 页面调试

  • window 系统:

    js
    ctrl + alt + shift + d;
  • mac 系统

    js
    command + control + shift + d;