shop-back-end/doc/simpread-三:如何获取第三方应用凭证 - 教程...

84 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 本文由 [简悦 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 获取企业的永久授权。