腾讯云短信报错"Message":"The request is missing a required parameter `Version`."

一.问题

腾讯云短信报错:“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)

到这里上面的报错问题就解决了:
在这里插入图片描述

发布了76 篇原创文章 · 获赞 44 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/qq_38278799/article/details/104306267