一.问题
腾讯云短信报错:“Message”:"The request is missing a required parameter Version
."
原因:输入参数不完整。
二.解决
报错信息为The request is missing a required parameter Version
.
1.首先看官方文档:官方文档
文档中给出了发送短信的示例,及其参数。
注意:给出的输入参数,我们如果按照这个来构造url发送get请求,坑定会报错,因为这个是多个api接口的公共参数,我们需要看上面公共参数来构造一个完整的请求:
对照签名方法v1中的必选参数,来进行相关配置:其中有两项参数需要注意:
1.SecretId需要开启云API密钥:https://console.cloud.tencent.com/cam/capi
2.Signature需要查看鉴权文档,也就是左侧的接口鉴权选项,通过此项可理解,需要生成一个签名。
我们找到自己的熟悉的开发语言来生成Signature签名,这里我选用了python,通过根据上述的示例,设置好参数,自己重新构造了一个:
# -*- coding: utf8 -*-
import base64
import hashlib
import hmac
import time
import requests
secret_id = ""
secret_key = ""
def get_string_to_sign(method, endpoint, params):
s = method + endpoint + "/?"
query_str = "&".join("%s=%s" % (k, params[k]) for k in sorted(params))
return s + query_str
def sign_str(key, s, method):
hmac_str = hmac.new(key.encode("utf8"), s.encode("utf8"), method).digest()
return base64.b64encode(hmac_str)
if __name__ == '__main__':
endpoint = "sms.tencentcloudapi.com"
data = {
'Action' : 'SendSms',
'PhoneNumberSet.0':'+8612312132',
'TemplateID':'421862',
'Sign':"小小灯泡",
'TemplateParamSet.0':'12345',
'SmsSdkAppid':'1400257144',
'Nonce' : 11886,
'Region' : 'ap-guangzhou',
'SecretId' : secret_id,
'Timestamp' : int(time.time()),
'Version': '2019-07-11'
}
s = get_string_to_sign("GET", endpoint, data)
data["Signature"] = sign_str(secret_key, s, hashlib.sha1)
print(data["Signature"])
# 此处会实际调用,成功后可能产生计费
resp = requests.get("https://" + endpoint, params=data)
print(resp.url)
到这里上面的报错问题就解决了: