python请求飞书API操作

由于工作原因需要了解飞书Api等相关操作. 搜索很多资料发现没有特别好写相关操作的,所以今天想写出一些对应操作方便大家查阅

飞书开放平台地址

在开发之前强烈建议将开发文档->服务文档->准备开发阅读,会解决开发中很多无法理解的内容. 如果开发时间有限,想要快速开发,那么希望我的文章能帮助你解决问题.

开发者后台

  • 开发者后台
    • 他有什么作用?
    • 如何创建?
      • 创建后的操作:
    • 创建完成后的注意事项
      • 创建群并添加机器人
      • 添加群编辑权限
  • 操作API
    • 获取自建应用token信息
    • 知识库:
      • 创建节点信息

开发者后台

他有什么作用?

开发内容调用api的第一步就是创建一个属于自己或者公司共用的应用.他解决了两个问题:

  • 调用api接时候需要身份等相关信息.
  • 通过应用的token信息调用是赋予权限.

如何创建?

在开放平台右上角可以看到,之后根据示例进行创建即可python请求飞书API操作_第1张图片

创建后的操作:

python请求飞书API操作_第2张图片
当你创建完成一个应用需要点击进去进行内容填充:

1.在 凭证与基础信息->综合信息 中添加应用图标(必须添加否则无法正常使用)
2.在 权限管理->权限配置中选择自己需要开通的相关api权限. 建议最好一次性全部申请,否则后续会出现每次加权,每次申请加版本的情况,非常麻烦
3.在 应用功能->机器人中点击启动机器人,用于后续的文档加权,否则无法进行相关crud的操作(如果对知识库等需要权限相关的文档调用API需要做这一步)

完成上述三步,就可以申请版本上线了(该操作用于将应用激活)

在应用发布->版本管理与发布->创建版本 根据相关提示进行版本创建
创建完成后需要申请线上发布否则该应用无法生效(该申请需要飞书管理员审批)python请求飞书API操作_第3张图片

创建完成后的注意事项

当你创建完成并成功发布以及完成激活之后需要操作:
将该机器人添加到某个群(该群建议在飞书app中进行创建),这一步是为了对接创建应用的第三步(启动机器人)那一项.

创建群并添加机器人

在飞书app中搜索框旁边点击加号键位(+)进行添加群聊,可单独创建(无需拉人).之后添加机器人
python请求飞书API操作_第4张图片
python请求飞书API操作_第5张图片

注意:如果添加机器人中没有你创建的应用需要检查两个情况:1.应用中是否开启机器人.2.该应用是否通过审批并且状态为已启用

添加群编辑权限

创建机器人以及群等相关操作都是为了添加编辑权限的,否则无法通过api进行相应文档(知识库)编辑,在需要编辑的文档中右上角三个点(…)->管理协作者->添加协作者->搜索群名并添加

python请求飞书API操作_第6张图片
python请求飞书API操作_第7张图片
python请求飞书API操作_第8张图片
接下来就可以开始我们的调用API操作了

操作API

操作之前需要保证:应用已经正常发布以及添加了相关权限.
除第一个API是必要的,其余都是示例,可以按需查看

获取自建应用token信息

该模块用于获取tenant_access_token信息,后续该信息要加入每次的请求头中

注意:该请求中app_id以及app_secret在开发者后台->自建应用->凭证与基础信息->应用凭证中获取

文档地址:
自建应用获取 tenant_access_token

def token_request():
	token_url: "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
	token_json = {
	            "app_id": app_id,
	            "app_secret": app_secret
	        }
	token_res = request.post(token_url, json=token_json)
	token_json = token_res.json()
	
	if token_res.status_code == 200 and token_json.get("code") == 0:
		return token_json.get('tenant_access_token')
	else:
	    return None

知识库:

我更多的业务是在知识库中进行操作的,所以对知识库的理解有一些,如果您也是要对知识库中相关信息进行操作的,那么我下面的内容会对您有一些帮助
知识库中相关名词:
1.space_id(空间id):该id表示了某个知识库中某个知识空间的id信息,唯一且不重复.获取方式为:获取知识空间列表
2.wiki_token(文档token):该id表示了某个文档的token信息,唯一且不重复.获取方式可以在空间中打开某文档获取url中信息. 示例:wikcnrzx8Cifqyt1aa56L6ECSbc
3.obj_token(对象token):该id用于通过API进行对象操作的唯一值标记信息唯一且不重复.获取方式:获取节点信息 通过传递wiki_token信息,为response中obj_token. 不同类型的的token信息对应不同的前缀头

创建节点信息

用于在某空间下创建节点信息
文档地址:创建节点
特别注意: obj_type中doc和docx区别很大,一个是旧文档的操作方式,一个是新文档的操作方式.建议选择为docx.旧文档有很多的问题,


create_url = f"https://open.feishu.cn/open-apis/wiki/v2/spaces/{space_id}/nodes"
create_json = {
	"obj_type": obj_type,
	"parent_node_token": node_token,
	"origin_node_token": node_token,
	"node_type": node_type
}
header = {"content-type": "application/json",
"Authorization": "Bearer " + tenant_access_token}
if kwargs:
    create_json.update(kwargs["kwargs"])
token_res = request.post(create_url, json=create_json, headers=header)
token_json = token_res.json()
if token_res.status_code == 200 and token_json.get("code") == 0:
    return token_json
else:
	return None

你可能感兴趣的:(python,python)