邮箱管理员通过邮箱管理后台的API开放平台,添加应用,勾选需要的权限,保存后即可获取到应用ID和Secret。
相关接口
基本流程
Python示例代码
说明
若key值不想从环境变量获取,直接传字符串即可,如
client_id ='xxxxxx'
client_secret ='xxxxxx'
重要
风险提示:下述代码在Python 3.11.9进行的测试,用于生产环境之前请务必先做好测试。
# -*- coding: utf-8 -*-
import os
import requests
from datetime import datetime, timedelta
def get_access_token():
"""
获取访问凭证。
本函数通过请求阿里云邮箱的OAuth2.0接口获取访问凭证(access_token)。
需要使用环境变量中的客户端ID和客户端密钥进行认证。
"""
# 打印接口名称和文档链接
print('接口名称:', '获取访问凭证,文档:https://mailhelp.aliyun.com/openapi/index.html#/markdown/authorization.md')
# 定义接口URL
interface_url = "https://alimail-cn.aliyuncs.com/oauth2/v2.0/token"
# 设置请求头,指定内容类型
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
# 从环境变量中获取客户端ID和密钥
client_id = os.getenv('ALIMAIL_CLIENT_ID') # 获取环境变量 AIMAIL_CLIENT_ID 的值,需要提前配置到环境变量中
client_secret = os.getenv('ALIMAIL_CLIENT_SECRET') # 获取环境变量 AIMAIL_CLIENT_SECRET 的值,需要提前配置到环境变量中
# 检查客户端ID和密钥是否已设置
if not client_id or not client_secret:
raise ValueError("Environment variables ALIMAIL_CLIENT_ID and ALIMAIL_CLIENT_SECRET must be set!")
# 准备请求数据
data = {
"grant_type": "client_credentials",
"client_id": client_id,
"client_secret": client_secret
}
try:
# 发送POST请求
response = requests.post(interface_url, headers=headers, data=data)
# 打印接口返回参数
print(f'接口返回参数:{response.json()}')
# 解析响应为字典
response_json = response.json()
# 提取token类型和过期时间
token_type = response_json["token_type"]
expires_in = response_json["expires_in"]
# 打印token类型
print(f'token_type: {token_type}')
# 计算过期时间
current_time = datetime.now()
expiration_time = current_time + timedelta(seconds=expires_in)
# 打印过期时间
print(f"expires_in: {round(expires_in / 3600)} hours,end_time:", expiration_time.strftime("%Y-%m-%d %H:%M:%S"))
# 返回访问凭证
return response_json["access_token"]
except requests.RequestException as e:
# 处理请求失败异常
print(f"请求失败:{e}")
except (KeyError, ValueError) as e:
# 处理解析响应失败异常
print(f"解析响应失败: {e}")
# 调用函数获取访问凭证并打印
access_token = get_access_token()
print(f'access_token: {access_token}')
运行结果
文档内容是否对您有帮助?