Mintegral REST API数据迁移Python代码报Token错误400求助
修复Mintegral REST API调用的Token验证错误
问题根源分析
你的Python代码出现Token验证错误,核心原因有两个:
- 生成Token时使用的时间戳与请求参数里的时间戳不统一:两次调用
time.time()会产生不同值(哪怕间隔毫秒级),导致服务端校验Token时时间戳不匹配。 Content-type错误地放在了URL参数中:GET请求无需在参数里传递该字段,即便需要设置也应放在请求头内。
修复后的代码
import requests import time import hashlib apikey = "xxxx" # 先固定整数时间戳,确保Token生成和请求参数用同一个值 timestamp = str(int(time.time())) # 按API规则生成Token:API密钥 + 时间戳的MD5值,再整体做MD5 timestamp_md5 = hashlib.md5(timestamp.encode()).hexdigest() token_raw = apikey + timestamp_md5 md5_token = hashlib.md5(token_raw.encode()).hexdigest() response = requests.get( "http://data.mintegral.com/v4.php?m=advertiser", params={ 'username': 'XXXABC', 'token': md5_token, 'timestamp': timestamp, # 'utc': '+8', 'start_date': '2022-06-07', 'end_date': '2022-06-13', # 'per_page': 5000 } ) print(response.text)
关键修改说明
- 统一时间戳:先获取并固定整数格式的时间戳,彻底避免前后时间值不一致的问题,这是Token验证通过的关键。
- 修正Token生成逻辑:严格按照API文档要求,对原始整数时间戳做MD5,再与API密钥拼接后再次MD5,而非对浮点数时间戳处理。
- 移除无效参数:删除URL参数中的
Content-type字段,GET请求无需该参数;若业务需要设置请求头,可添加headers={'Content-Type': 'application/json'}到requests.get()的参数中。
内容的提问来源于stack exchange,提问作者Nhi Yen
相关产品推荐
相关产品推荐

