郵箱管理員通過郵箱管理后臺的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://mailbestwisewords.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}')
運行結果
文檔內容是否對您有幫助?