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

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

飞书

使用场景
当需要通过 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 即可。
预约飞书企业效能顾问 深度诊断企业痛点,定制专属 AI 办公方案

字节跳动旗下 AI 工作平台

关联文章推荐

优质内容,精华实践

先进团队,先用飞书

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

字节跳动旗下 AI 工作平台

联系我们立即试用