根据文档提供的方法生成签名后,请求 API 一直返回 4100-验证失败。
有没有用过的大佬帮忙看看哪里出了问题?
参考的文档是这个: https://cloud.tencent.com/document/api/271/2053
谢谢
import requests
import os
import time
import random
import urllib.parse
import hashlib
import hmac
import base64
# HmacSHA256 加密算法
def Hmac_SHA256(string, key):
string_b = bytes(string, encoding="utf-8")
key_b = bytes(key, encoding="utf-8")
signature = base64.b64encode(hmac.new(key=key_b, msg=string_b, digestmod=hashlib.sha256).digest())
return signature.decode("utf-8")
# 请求 API
def req_api():
# 生成通用参数
nonce = str(random.randint(1, 65535))
timestamp = str(int(time.time()))
region = "sz"
action = "TextSentiment"
# 密钥
TX_SecretKey = os.getenv("TX_SecretKey")
TX_SecretId = os.getenv("TX_SecretId")
# 请求方式
method = "GET"
# 组合字符串
url = "wenzhi.api.qcloud.com/v2/index.php"
params = {
"Action": action,
"Nonce": nonce,
"Region": region,
"SecretId": TX_SecretId,
"SignatureMethod": "HmacSHA256",
"Timestamp": timestamp,
}
params_string = urllib.parse.urlencode(params)
src_string = "{}{}?{}".format(method, url, params_string)
print(src_string)
# 使用 hamxsha256+base64 生成签名
sign_string = Hmac_SHA256(src_string, TX_SecretKey)
print("Signature is {}".format(sign_string))
url = "https://wenzhi.api.qcloud.com/v2/index.php"
params = {
"Action": action,
"Nonce": nonce,
"Region": region,
"SecretId": TX_SecretId,
"Timestamp": timestamp,
"Signature": sign_string,
"content": "双万兆服务器就是好,只是内存小点",
}
response = requests.get(url, params=params, verify=False)
print(response.text)
if __name__ == '__main__':
req_api()
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.