84 lines
3.8 KiB
Markdown
84 lines
3.8 KiB
Markdown
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [developer.work.weixin.qq.com](https://developer.work.weixin.qq.com/tutorial/detail/39)
|
||
|
||
> 三:如何获取第三方应用凭证
|
||
|
||
三:如何获取第三方应用凭证
|
||
|
||
最后更新:2023/06/05
|
||
|
||
在上一节教程中,我们对完成了回调 URL 两种形式的实现。在本节教程,我们将使用指令回调 URL 的 HttpPost 回调方式,来接收 suite_ticket,获取 suite_access_token。
|
||
|
||
通过本节教程,开发者将了解:
|
||
|
||
1. 如何使用指令回调 URL 接收 suite_ticket
|
||
2. 如何获取第三方应用凭证 suite_access_token
|
||
|
||
[](#%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C)准备工作
|
||
---------------------------------------------
|
||
|
||
在开始本教程内容前,开发者需要做如下准备:
|
||
|
||
* 已创建第三方应用,在第三方【应用详情】-【基本信息】找到对应的 suite_id 和 suite_secret 信息,可参考 [一:如何创建第三方应用](https://developer.work.weixin.qq.com/tutorial/detail/37)
|
||
* 确保指令回调 URL 能够正确接收回调,并正确响应,可参考 [二:如何接收企业微信回调](https://developer.work.weixin.qq.com/tutorial/detail/38)
|
||
|
||
[](#%E6%8E%A5%E6%94%B6-suite-ticket)接收 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](https://developer.work.weixin.qq.com/document/path/90628)。
|
||
|
||
[](#%E8%8E%B7%E5%8F%96-suite-access-token)获取 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 更详细的内容,请参考 [获取第三方凭证](https://developer.work.weixin.qq.com/document/path/90600) 。
|
||
|
||
[](#%E7%BB%93%E8%AF%AD)结语
|
||
-------------------------
|
||
|
||
在本节教程中,我们通过接收 suite_ticket ,获取了 suite_access_token,在下节课程中,我们将演示如何进行企业授权安装应用,以及如何通过 suite_access_token 获取企业的永久授权。 |