Mintegral REST API文档https://www.mintegral.com/wp-content/uploads/2018/10/1-Mintegral_Reporting-API.pdf
当我在Python中运行这段代码时,它总是返回{"code":400,"msg":"Validation fails (Token Error)","data":null}
(随附屏幕截图)x1c 0d1x
API密钥和用户名正确。我不知道为什么????
import requests
import time
import hashlib
apikey = "xxxx"
encoded_timestamp = hashlib.md5(str(time.time()).encode())
token = apikey + encoded_timestamp.hexdigest()
md5_token = hashlib.md5(token.encode()).hexdigest()
response = requests.get("http://data.mintegral.com/v4.php?m=advertiser",
params = {
'username':'XXXABC'
,'token':md5_token
,'timestamp':str(int(time.time()))
# ,'utc':'+8'
,'start_date':'2022-06-07'
,'end_date':'2022-06-13'
,'Content-type': 'application/json'
# ,'per_page':5000
}
)
response.text
但是当我在PHP中检查示例时,它可以工作。你能帮我修改一下Python代码吗?
有人有经验吗?
提前感谢!
3条答案
按热度按时间3qpi33ja1#
问题出在逻辑上。您使用
time.time()
函数两次,一次是在创建令牌时,第二次是在POST时。因此,您的哈希与服务器哈希不同。qzwqbdag2#
由于我正在检查Python中Mintegral API的实现,并且这是Google搜索中的第一个结果之一,因此我想更新适用于我的解决方案。
我没有包含请求,但在我的示例中,很清楚如何生成令牌和塑造头部。
你在头文件中使用了用户名而不是访问键,这可能是一个旧的API调用。Mintegral API的文档可以在here中找到。
1rone的两个答案都在我的解决方案中实现了。我将时间戳保存在变量
now
中,并按照Mintegral API文档的要求将其转换为整数。(time.time()
返回浮点数)bbmckpt73#
看起来,您忘记在第6行生成str(int(time.time()))