44import json
55import os
66
7- def GET_USER_ACCESS_TOKEN (login_code , config_path = 'feishu-config.ini' ):
7+ def GET_USER_ACCESS_TOKEN (login_code ):
8+ # 配置文件路径
9+ config_path = 'feishu-config.ini'
10+
811 # 确保配置文件存在
912 if not os .path .exists (config_path ):
1013 with open (config_path , 'w' ) as f :
@@ -21,6 +24,10 @@ def GET_USER_ACCESS_TOKEN(login_code, config_path='feishu-config.ini'):
2124 # 从配置文件获取参数
2225 app_access_token = config .get ('TOKEN' , 'app_access_token' , fallback = None )
2326
27+ # 如果app_access_token不存在,需要用户先获取它
28+ if not app_access_token :
29+ raise ValueError ("app_access_token not found in the configuration file. Please get it first." )
30+
2431 # 构建请求URL和请求头
2532 url = "https://open.feishu.cn/open-apis/authen/v1/access_token"
2633 headers = {
@@ -38,27 +45,49 @@ def GET_USER_ACCESS_TOKEN(login_code, config_path='feishu-config.ini'):
3845 response = requests .post (url , headers = headers , data = json .dumps (payload ))
3946 response_json = response .json ()
4047
48+ # 检查响应状态码
49+ if response .status_code != 200 :
50+ print (f"HTTP Error: { response_json } " )
51+ return None
52+
53+ # 检查响应体中的 code
54+ if response_json .get ('code' ) != 0 :
55+ print (f"Response Error: { response_json } " )
56+ return None
57+
58+
4159 # 更新配置文件
4260 if 'data' in response_json and 'access_token' in response_json ['data' ]:
4361 config .set ('TOKEN' , 'user_access_token' , response_json ['data' ]['access_token' ])
44- config .set ('TOKEN' , 'login_code' , login_code )
4562 with open (config_path , 'w' , encoding = 'utf-8' ) as configfile :
4663 config .write (configfile )
4764
4865 return response_json .get ('data' , {}).get ('access_token' )
4966
67+
5068def GET_USER_ACCESS_TOKEN_CMD ():
5169 # 解析命令行参数
5270 parser = argparse .ArgumentParser ()
53- parser .add_argument ('-l' , '--login_code' , required = True , help = '登录预授权码' )
71+ parser .add_argument ('-l' , '--login_code' , help = '登录预授权码' )
5472 args = parser .parse_args ()
5573
74+ # 读取配置文件
75+ config = configparser .ConfigParser ()
76+ config .read ('feishu-config.ini' , encoding = 'utf-8' )
77+
78+ # 获取登录码,优先从命令行参数获取,没有则从配置文件获取
79+ login_code = args .login_code if args .login_code else config .get ('TOKEN' , 'login_code' , fallback = None )
80+
81+ if not login_code :
82+ raise ValueError ("login_code is required either in command line argument or in the configuration file." )
83+
5684 # 调用 GET_USER_ACCESS_TOKEN 函数,获取 user_access_token
57- user_access_token = GET_USER_ACCESS_TOKEN (args . login_code )
85+ user_access_token = GET_USER_ACCESS_TOKEN (login_code )
5886
5987 # 打印结果
6088 print (f'user_access_token: { user_access_token } ' )
6189
90+
6291# 主函数
6392if __name__ == "__main__" :
6493 GET_USER_ACCESS_TOKEN_CMD ()
0 commit comments