3.8 KiB
本文由 简悦 SimpRead 转码, 原文地址 developer.work.weixin.qq.com
三:如何获取第三方应用凭证
三:如何获取第三方应用凭证
最后更新:2023/06/05
在上一节教程中,我们对完成了回调 URL 两种形式的实现。在本节教程,我们将使用指令回调 URL 的 HttpPost 回调方式,来接收 suite_ticket,获取 suite_access_token。
通过本节教程,开发者将了解:
- 如何使用指令回调 URL 接收 suite_ticket
- 如何获取第三方应用凭证 suite_access_token
准备工作
在开始本教程内容前,开发者需要做如下准备:
- 已创建第三方应用,在第三方【应用详情】-【基本信息】找到对应的 suite_id 和 suite_secret 信息,可参考 一:如何创建第三方应用
- 确保指令回调 URL 能够正确接收回调,并正确响应,可参考 二:如何接收企业微信回调
接收 suite_ticket
企业微信服务器会定时(每十分钟)向指令回调 URL 推送 suite_ticket,在指令回调的后台逻辑中解密消息体即可得到对应的 InfoType 和 SuiteTicket 。
不同类型的指令回调会通过不同的 InfoType 进行区分,在每次解密得到 suite_ticket 后,应在服务端临时缓存起来。
// 读取对应的回调 type
const info_type = callbackDataBody.InfoType;
console.log('InfoType', info_type);
switch (info_type) {
// 推送suite_ticket
case 'suite_ticket':
console.log('SuiteTicket', callbackDataBody.SuiteTicket);
// 将 suite_ticket 缓存起来
Tool.SaveSuiteTicket(callbackDataBody.SuiteTicket);
break;
default:
break;
}
关于 suite_ticket 的接收与使用更详细的内容,请参考 推送 suite_ticket。
获取 suite_access_token
在成功接受并且缓存 suite_ticket 之后,我们可以主动来获取 suite_access_token。获取 suite_access_token 时,需要 suite_id suite_secret suite_ticket 作为参数。
const axios = require('axios');
// 读取先前缓存的 suite_ticket
let suite_ticket = Tool.GetSuiteTicket();
// 【应用详情】-【回调配置】对应的 suite_id 和 suite_secret 信息
const suite_id = '';
const suite_secret = '';
// 发起请求获取 suite_access_token
const {data} = await axios.post('https://qyapi.weixin.qq.com/cgi-bin/service/get_suite_token', {
suite_id,
suite_secret,
suite_ticket,
});
const { suite_access_token,expires_in } = data;
if (suite_access_token) {
console.log('获取成功',suite_access_token);
// 将 suite_access_token 缓存起来
Tool.SaveSuiteAccessToken(suite_access_token);
}
else{
console.error('获取失败');
}
通过本接口获取的 suite_access_token 有效期为 2 小时,开发者需要进行缓存,不可频繁获取。
关于获取 suite_access_token 更详细的内容,请参考 获取第三方凭证 。
结语
在本节教程中,我们通过接收 suite_ticket ,获取了 suite_access_token,在下节课程中,我们将演示如何进行企业授权安装应用,以及如何通过 suite_access_token 获取企业的永久授权。