騰訊雲短信報錯"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)

到這裏上面的報錯問題就解決了:
在這裏插入圖片描述

發佈了80 篇原創文章 · 獲贊 44 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章