飞书开发学习笔记(四)-飞书API的访问凭证获取

2023-11-06 13:44

本文主要是介绍飞书开发学习笔记(四)-飞书API的访问凭证获取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

飞书开发学习笔记(四)-飞书API的访问凭证获取

一.了解飞书的访问凭证体系

飞书有一套完善的鉴权管理系统,在飞书API开发时,请求头中必须包含有相关的凭证信息。这个凭证信息是整个开发的安全所在,并且有对应的时效,所以了解飞书的这一套访问凭证体系是非常重要的。
获取访问凭证:获取访问凭证方法介绍
在这里插入图片描述
访问凭证分为三种:
tenant_access_token 租户授权凭证:应用代表租户(即企业或团队)执行对应操作,也就是说团队而非个人的场景。t-前缀。
user_access_token 用户授权凭证:代表用户执行的操作,比如云文档或日程。u-前缀。
app_access_token 应用授权凭证:应用使用自己的身份执行对应操作,不归属到具体的企业或用户。a-或t-前缀。

选择合适的访问凭证:
由于app_access_token的使用场景比较少,飞书开放平台正在逐步统一app_access_token和tenant_access_token两个凭证。

tenant_access_token
Tenant Access Token 代表使用应用的身份操作 OpenAPI,API 所能操作的数据资源范围受限于应用的身份所能操作的资源范围。

如果你的业务逻辑不需要操作用户的数据资源,仅需操作应用自己拥有的资源(比如在应用自己的文档目录空间下创建云文档),则推荐使用 Tenant Access Token,无需额外申请授权。

user_access_token
User Access Token 代表使用应用的使用者的身份操作 OpenAPI,API 所能操作的数据资源范围受限于用户的身份所能操作的资源范围。

如果你的业务逻辑需要操作用户的数据资源(例如需要在用户的文档目录空间下创建云文档),则推荐使用 User Access Token,无需额外申请授权。如果使用 Tenant Access Token,则需额外在资源层面为应用添加相应的授权。

以通讯录为例,如需使用 Tenant Access Token 调用通讯录,则需在开发者后台「权限管理」页面配置应用的通讯录权限范围;而使用 User Access Token 则无需单独配置通讯录权限范围,该范围遵循 User Access Token 所属的用户的通讯录权限范围。

二.获取相应的访问凭证

2.1凭证有效期

访问凭证存在有效期。
tenant_access_token和app_access_token的最大有效期是 2 小时。
user_access_token 的最大有效期是 6900 秒。
开发者需要在自己的服务端设置定时刷新凭证的业务逻辑,以防止过期。如在过期前 1.5 小时之内重新获取凭证,则会拿到与原值相同的值,但每次返回的剩余有效时间(expire)会发生变化,如下图所示。
在这里插入图片描述

2.2获取自建应用的 tenant_access_token

在 基础信息 > 凭证与基础信息 页面,获取应用凭证 App ID 和 App Secret。
这个在第一页是有说明的,用在API的headers里也能找到。
在这里插入图片描述
然后利用API获取 tenant_access_token
在这里插入图片描述
需要的参数: App ID 和 App Secret填入请求体,这两个参数是App创建完成之后固定不变的。

#API范例获取自建应用凭证tenant_access_tokenapp_id="cli_a3XXXXXX00e"
app_secret="kCp1XXXXXXXXXDu"
url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
payload = json.dumps({"app_id": app_id,"app_secret": app_secret
})headers = {'Content-Type': 'application/json'
}response = requests.request("POST", url, headers=headers, data=payload)
json_Data=json.loads(response.text)
# 打印返回体信息
print(json_Data)
tenant_access_token=json_Data['tenant_access_token']

这样,用这两个参数就获得了tenant_access_token
{‘code’: 0, ‘expire’: 3716, ‘msg’: ‘ok’, ‘tenant_access_token’: 't-xxxxxx}
返回体中有一个expire代表的是有效时间,3716代表还剩3716秒

说明: tenant_access_token 的最大有效期是 2 小时。如果在有效期小于 30 分钟的情况下,调用本接口,会返回一个新的 tenant_access_token,这会同时存在两个有效的 tenant_access_token。

2.3获取用户访问凭证 user_access_token

本章节以应用的网页应用功能为例介绍如何获取 user_access_token。如果你需要为应用的小程序能力获取user_access_token,则需要参考使用小程序提供的 code2session 接口。
获取 user_access_token 的方式同时适用于企业自建应用和商店应用。

登录开发者后台,选择指定应用。
在 开发配置 > 安全设置 页面,配置重定向 URL。
在这里插入图片描述
根据开发文档的介绍,需要应用中添加应用能力,比如小程序,网页或者移动应用登录等等,然后把
服务端URL进行重定向。这个过程比较复杂,就不进行展开了。
在这里插入图片描述
这里是网页应用免登以及二维码扫描登录的案例:
网页应用免登
https://open.feishu.cn/document/home/quickly-create-a-login-free-web-app/introduction
二维码扫描登录
https://open.feishu.cn/document/home/qr-code-scanning-login-for-web-app/introduction
在这里插入图片描述
飞书开放平台会校验应用发送过来的重定向 URL 的合法性,仅在重定向 URL 列表中的 URL 会通过校验。
在这里插入图片描述
这个API是https://open.feishu.cn/open-apis/authen/v1/access_token 方法为POST
需要的参数中 请求头的Authorization需要app_access_token
而请求体中的code需要 登录预授权码
都需要从其它方法中获得。
在这里插入图片描述

  1. 获取app_access_token
    在这里插入图片描述
    API https://open.feishu.cn/open-apis/auth/v3/app_access_token
    方法为POST
    在这里插入图片描述
    只有1个app_ticket需要获取,其它都是有的,以下为app_ticket的获取方法。

    根据以上说明,在配置请求地址以后,就可以通过接收消息获取最新的app_ticket,这样就得到了所有的参数可以执行app_access_token的查询和获得了。
  2. 获取登录预授权吗code
    获取登录预授权码
    在这里插入图片描述
    API格式,方法为GET
    在这里插入图片描述
    需要配置的参数如下:
    在这里插入图片描述
    redirect_uri:重定向URL地址,在应用的“安全设置”中设置
    app_id:应用id已经获得
    state:用来维护请求和回调状态的附加字符串, 在授权完成回调时会附加此参数,应用可以根据此字符串来判断上下文关系示例中为RANDOMSTATE
    根据以上,飞书API访问凭证获取就了解完成了,实际上还有很多具体内容需要掌握,以后再慢慢结合应用开发进行练习。

这篇关于飞书开发学习笔记(四)-飞书API的访问凭证获取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/356981

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.