一.問題
騰訊雲短信報錯:“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)
到這裏上面的報錯問題就解決了: