详解nodejs 开发企业微信第三方应用入门教程

详解nodejs 开发企业微信第三方应用入门教程

前言

本教程旨在介绍如何使用Node.js开发企业微信第三方应用,相关内容适用于搭建企业内部应用或者SaaS平台。通过本教程,您将学习到如下知识:

  • 掌握企业微信第三方应用的基本概念和开发流程
  • 熟悉OAuth2.0协议并实现第三方应用的授权流程
  • 学会使用企业微信API接口,开发出功能丰富的企业微信应用

准备工作

在开始开发之前,我们需要完成如下准备工作:

1. 注册企业微信第三方应用

在准备工作中,首先需要注册企业微信第三方应用,并申请相关的API接口权限。在申请API接口权限完成之后,您可以拥有以下接口权限:

  • 客户联系/客户群管理/消息发送/素材管理/企业信息管理
  • 应用管理/除可信域名配置外的相应应用接口(多个应用间共享)

2. 确认授权流程

企业微信第三方应用的授权流程分为三个阶段:授权发起、授权回调和企业使用。在授权发起阶段,您需要完成如下几个步骤:

  1. 引导企业管理员进入企业微信授权页面
  2. 获取到企业管理员的授权信息
  3. 将授权码传递给第三方应用

至此,授权发起阶段已经完成。在授权回调阶段,您需要完成如下几个步骤:

  1. 获取企业管理员的永久授权码
  2. 获取企业的access_token
  3. 根据access_token,访问其他企业应用API接口

在企业使用阶段,则需要您完成以下几个步骤:

  1. 创建企业应用菜单
  2. 获取企业内部用户基本信息
  3. 发送企业消息/客户消息

3. 安装依赖组件

在开始编写Node.js代码前,您还需要安装如下依赖组件:

  • express
  • request
  • querystring
  • xml2js

您可以使用如下命令安装这些依赖组件:

npm install express request querystring xml2js --save

安装完成后,您就可以开始编写Node.js代码了。

实现授权发起流程

1. 获取跳转链接

在这个示例中,我们使用Node.js + Express完成企业微信第三方应用的授权发起流程。在实现授权发起流程之前,您需要配置好企业微信授权页面的跳转链接。您可以通过调用以下API接口,获取到跳转链接:

var crypto = require('crypto');

//构造auth2Url
var auth2Url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + YOUR_CORP_ID +
 '&redirect_uri=' + encodeURIComponent(YOUR_APP_AUTHORIZE_URL) +
 '&response_type=code&scope=snsapi_privateinfo#wechat_redirect';

//对auth2Url进行加密,使用SHA1算法加密AccessToken
var now = Date.now();
var nonce = Math.random().toString(36).substr(2);
var url = auth2Url.replace(/&|\?/g, '');
var signature = crypto.createHash('sha1').update(url + '&' + now + '&' + nonce + '&'+ YOUR_APP_TOKEN).digest("hex");

//将加密后的AccessToken、时间戳、nonce、跳转链接拼装在一起,返回给前端
var auth2UrlParams = "?signature=" + signature + "&timestamp=" + now + "&nonce=" + nonce + "&auth2Url=" + encodeURIComponent(auth2Url);
var finalAuth2Url = 'https://open.weixin.qq.com/connect/oauth2/authorize' + auth2UrlParams;

2. 发送带有跳转链接的授权请求

授权发起完成之后,您需要将带有跳转链接的授权请求发送给企业管理员。企业管理员在点击此链接后,将会被引导至企业微信授权页面。

app.get('/auth', function (req, res) {
  var redirectUrl = req.query.redirect_uri;
  var userId = req.query.userid;

  //将redirectUri和userId存储在缓存中
  cache.set(userId, redirectUrl);

  //根据企业id获取跳转链接
  getAuth2Url(req.query.corpid,function (authUrl) {
    //发送带有跳转链接的授权请求
    res.redirect(authUrl);
  })
})

在以上代码中,我们使用了一个cache组件,用于将redirectUri和userId存储在缓存中。在企业管理员授权完成后,我们还需要使用userId和缓存中存储的redirectUri信息,生成授权页面的回调链接。

实现授权回调流程

1. 获取企业管理员授权信息

企业管理员授权完成后,企业微信会将授权信息通过GET方式传递给您的应用。在授权回调流程中,您需要根据授权的结果,获取到企业管理员的授权信息。在本示例中,我们使用如下方式获取企业管理员的授权信息:

app.get('/auth/callback', function (req, res) {
  var code = req.query.code;
  var state = req.query.state;

  //根据授权码获取access_token
  getAccessToken(code,function (err, accessToken) {
    //根据access_token和企业管理员信息,获取企业管理员的授权信息
    getUserInfo(accessToken, state, function (err, user) {

      //从缓存中获取redirect_url和userId信息,并删除缓存中的数据
      var redirect_url = cache.get(user.UserId);
      cache.remove(user.UserId);

      //跳转到应用回调页面
      res.redirect(redirect_url + '?auth_code=' + user.AuthCode);
    });
  });
})

在以上代码中,我们使用了一个getAccessToken和getUserInfo函数,用于获取access_token和企业管理员的授权信息。

2. 获取企业访问令牌

在获取企业管理员授权信息之后,我们还需要获取企业访问令牌。一个企业访问令牌(access_token),代表了一个企业的身份,您需要使用企业访问令牌才能访问企业微信API接口。在本示例中,我们使用如下方式获取企业访问令牌:

function getAccessToken(code, callback) {
  //通过授权码获取access_token
  request({
    url: 'https://qyapi.weixin.qq.com/cgi-bin/gettoken',
    qs: {
      corpid: YOUR_CORP_ID,
      corpsecret: YOUR_APP_SECRET
    },
    method: 'GET',
    json: true
  }, function (err, res, data) {
    if (!err && data.access_token) {
      callback(null, data.access_token);
    } else {
      console.log("Get access_token error:", err);
      callback(err);
    }
  });
}

在以上代码中,我们使用corpid和corpsecret信息,发送GET请求获取企业访问令牌,如果获取成功,则将令牌信息返回给回调函数。如果获取失败,则把错误信息传递给回调函数。

示例1:获取企业内部用户基本信息

企业微信API提供了获取企业内部用户基本信息的方法。在本示例中,我们通过GET方法,获取特定用户的用户信息。以下是获取用户基本信息的代码示例:

function getUser(accessToken, userId, callback) {
  var url = 'https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=' + accessToken + '&userid=' + userId;
  request.get(url, function (err, res, body) {
    if (err) {
      callback(err);
    } else {
      var user = JSON.parse(body);
      callback(null, user);
    }
  });
}

在以上代码中,我们使用JSON.parse方法,将从API接口返回的JSON格式的用户信息转换为JavaScript对象。在处理用户信息时,您可以自行决定需要缓存哪些用户信息和缓存时间等信息。

示例2:发送企业消息

企业微信API提供了发送企业消息的方法。在本示例中,我们使用企业微信API接口,向特定用户发送一条企业消息。以下是发送企业消息的代码示例:

function sendText(accessToken, userId, text, callback) {
  var url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accessToken;
  var formData = {
    touser: userId,
    msgtype: "text",
    agentid: AGENT_ID,
    text: {
      content: text
    },
    safe: 0
  };
  request.post({url: url, form: formData}, function (err, res, body) {
    if (err) {
      callback(err);
    } else {
      var result = JSON.parse(body);
      callback(null, result);
    }
  });
}

在以上代码中,我们使用了POST方法,向企业微信API发送请求。formData参数中,touser表示接收消息的用户id,msgtype表示消息类型,content表示消息内容。

结语

本文介绍了企业微信第三方应用的开发过程,并提供了2个示例,分别介绍了如何使用企业微信API获取企业内部用户基本信息和发送企业消息。在实际开发中,您还可以使用企业微信API,完成客户联系、客户群管理、消息发送、素材管理、应用管理等功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解nodejs 开发企业微信第三方应用入门教程 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • nodejs中的http模块与npm模块使用

    下面是关于nodejs中的http模块与npm模块使用的介绍和示例说明。 http模块 在nodejs中,http模块是一个核心模块,它提供了创建HTTP服务器和客户端的方法,常用于编写Web应用程序。 创建HTTP服务器 要创建HTTP服务器,可以使用http.createServer()方法。该方法会返回一个HTTP服务器实例,我们可以监听该实例的req…

    node js 2023年6月8日
    00
  • Node.js中用D3.js的方法示例

    下面是Node.js中用D3.js的方法示例的完整攻略: 1. 安装Node.js和D3.js 首先需要在本地安装Node.js和D3.js。Node.js可以到官网上下载安装包进行安装,而D3.js可以通过npm安装命令进行安装,具体步骤如下: npm install d3 安装完成后,在项目文件夹中创建一个index.html文件和一个app.js文件。…

    node js 2023年6月8日
    00
  • node + multer 实现文件上传过程

    下面是关于使用 node + multer 实现文件上传的攻略: 1. 安装和引入 multer Multer 是一个处理文件上传的 node.js 中间件。首先需要在命令行中使用 npm 安装 multer 包: npm install multer –save 安装完成后,在 Node.js 脚本中引入 multer: const multer = r…

    node js 2023年6月8日
    00
  • Node.js使用Koa搭建 基础项目

    下面我会详细讲解“Node.js使用Koa搭建基础项目”的完整攻略。 1. 安装Node.js和npm 如果您还没有安装Node.js和npm,可以前往官网 https://nodejs.org/ ,选择适合您操作系统的版本进行下载和安装。 2. 初始化项目 在命令行中使用以下命令来创建一个新的项目,例如名为“koa-demo”: $ mkdir koa-d…

    node js 2023年6月8日
    00
  • 对mac下nodejs 更新到最新版本的最新方法(推荐)

    更新mac下的nodejs到最新版本通常需要经历以下步骤: 1. 安装 Node Version Manager (NVM) NVM 是一个简单易用的 Node.js 版本管理工具,安装后我们可以在不同的 Node.js 版本间随意切换。可以使用以下命令在终端中安装 NVM: curl -o- https://raw.githubusercontent.co…

    node js 2023年6月8日
    00
  • JavaScript实现的图像模糊算法代码分享

    下面为您详细讲解“JavaScript实现的图像模糊算法代码分享”的完整攻略。 步骤一:获取图像数据 我们首先需要获取一个图片的像素点数据,可以使用<canvas>元素来实现。首先将图片绘制到canvas上,然后可以使用getImageData()方法来获取图像的像素点数据,该方法返回一个ImageData对象,可包含一个canvas对象上指定矩…

    node js 2023年6月8日
    00
  • 搭建简单的nodejs http服务器详解

    搭建简单的Node.js HTTP服务器是很容易的,只需要几个步骤即可完成。下面是完整攻略: 步骤1:安装Node.js 首先,你需要在你的计算机上安装Node.js。你可以在Node.js官网下载对应的安装包,并根据提示进行安装。 步骤2:创建服务器文件 在你的计算机上创建一个新文件夹,用于存放服务器文件。接下来,创建一个新文件,命名为 server.js…

    node js 2023年6月8日
    00
  • Node.js实现简单聊天服务器

    我来详细讲解一下“Node.js实现简单聊天服务器”的完整攻略。 1. 安装Node.js 首先需要安装Node.js,可以去官网下载安装包安装,或者使用命令行工具,在命令行中输入以下命令: $ sudo apt-get update $ sudo apt-get install nodejs 安装完成后,可以通过在命令行中输入以下命令来检验是否安装成功: …

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部