Skip to content

Commit 94dfcbb

Browse files
committed
1.20.2
1 parent fa6fb9d commit 94dfcbb

File tree

1 file changed

+33
-4
lines changed

1 file changed

+33
-4
lines changed

GET_USER_ACCESS_TOKEN.py

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
import json
55
import 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+
5068
def 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
# 主函数
6392
if __name__ == "__main__":
6493
GET_USER_ACCESS_TOKEN_CMD()

0 commit comments

Comments
 (0)