如何在HTTP集成外部API时解析和使用动态Token|飞书低代码平台

如何在HTTP集成外部API时解析和使用动态Token|飞书低代码平台

飞书低代码平台手册精选NaN-NaN-NaN
产品功能
使用场景
当需要通过 HTTP 请求与外部 API 集成时,API 接口可能是需要动态 token 来鉴权的。
如何获取并解析出动态 token,并将 token 用于正式的 API 请求中呢?
本文主要基于该场景进行解决方案的介绍
前提假设与背景
  1. 动态 token 是通过特定的 http 请求去获取的,下文以打通飞书开放平台的 OpenAPI 为例进行示例
备注:为了与飞书有更好的集成体验,在 HTTP 请求连接器中,已经封装了「飞书集成」的鉴权方式,用户仅需要选择需要使用的「飞书集成」即可。
飞书开发平台仅是作为参考案例,供第三方集成时参考,整体的配置流程是类似的。
  1. 假设现在的集成场景是:希望使用飞书自建应用的身份来调用 API 获取机器人所在的群列表
  1. 飞书开放平台服务端 API 的调用流程如下图所示:
250px|700px|reset
为了提升 API 调用的安全性,飞书开放平台设计了访问凭证(access_token)机制,调用 API 获取应用资源时,需要通过 access_token 对调用者身份进行鉴权,即告知飞书当前是谁、以什么身份获取什么租户的数据。访问凭证是接入飞书开放平台的钥匙,将应用获得的所有数据访问和接口调用权限绑定在一起,允许应用对资源进行读写操作。
如何获取自建应用的 tenant_access_token ?
如何将获取到的 token 作为真实 API 请求时的鉴权信息传入呢?
让我们来一起看下面的解决方案
解决方案
Step 1. 获取 token 的接口定义
需要了解预期要集成的平台所定义的获取 token 的接口,如:
根据飞书开放平台的获取 tenant_access_token 的接口定义(https://open.feishu.cn/document/server-docs/authentication-management/access-token/tenant_access_token_internal
请求 URL
HTTP method
POST
请求体
app_id
string
应用唯一标识,创建应用后获得。有关app_id 的详细介绍。请参考通用参数介绍
app_secret
string
应用秘钥,创建应用后获得。有关 app_secret 的详细介绍,请参考通用参数介绍
响应体
code
int
错误码,非 0 取值表示失败
msg
string
错误描述
tenant_access_token
string
租户访问凭证
expire
int
tenant_access_token 的过期时间,单位为秒
Step 2. 使用「HTTP 请求」连接器去获取 token
添加 http 请求连接器
250px|700px|reset
按照「Step 1」中 获取 token 的接口定义 来配置连接器的请求内容,包括 连接的鉴权方式、请求 URL、请求方法、请求头、请求参数及请求体
250px|700px|reset
250px|700px|reset
按照「Step 1」 中的响应体去配置连接器的输出。
  • 编辑输出 schema 的入口
250px|700px|reset
  • 可以通过响应体的示例来生成 schema
250px|700px|reset
  • 生成当前节点的输出 schema(用户下游消费)
250px|700px|reset
Step 3. 配置真正要请求的 API
使用「Step 2」 中获取到的 token 去配置真正要请求的 API
  • 准备工作:将「获取 token」节点输出的 token 取出后,封装为后续 API 需要的格式。
例如:获取机器人所在的群列表 API 需要的鉴权格式为
250px|700px|reset
image.png
可以使用公式节点来拼接为「Bearer ${token}」格式
250px|700px|reset
  • 接下来就可以配置真正用于请求 API 的连接器了
  1. 再添加一个「HTTP 请求」连接器,可以将公式处理后的 token 作为 http 请求的请求头
250px|700px|reset
  1. 然后完善待请求 API 的查询参数、请求体等参数,就配置完成了
250px|700px|reset
  1. 整体「获取 token 到引用 token 去发 http 请求」的流程如下:
250px|700px|reset
  1. 实际运行时就会先请求获取 token,再通过一个 HTTP 连接器去引用获取到的 token ,去发起真正的业务请求去获取数据。
进阶使用
  • 使用需求:
不希望每次执行流程时都去获取一次 token。
因为一般动态 token 都有一个有效期,有效期内 token 不变
  • 解决方案:
可以在获取到 token 后,将 token 记录到对象的某个字段中,然后再次触发流程的时候可以通过分支判断 token 是否已经过期。
如果未过期,就可以跳过获取 token 的节点直接发起 HTTP 请求 API 即可。
先进生产力和业务协同平台
联系我们立即试用

先进团队,先用飞书

欢迎联系我们,飞书效能顾问将为您提供全力支持
分享先进工作方式
输送行业最佳实践
全面协助组织提效
联系我们立即试用