TencentCloud / tencentcloud-sdk-python

Tencent Cloud API 3.0 SDK for Python
Apache License 2.0
613 stars 251 forks source link

FailedOperation.SignatureIncorrectOrUnapproved #55

Closed maiff closed 4 years ago

maiff commented 4 years ago
import json
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException 
from tencentcloud.sms.v20190711 import sms_client, models 
#  from .config import cred
from tencentcloud.common import credential

def sendMessage(number, TemplateParamSet, TemplateID='520106', Sign='261543' ):
    try: 
        SecretId = 'xxx'
        SecretKey = 'xxx'

        cred = credential.Credential(SecretId, SecretKey) 
        httpProfile = HttpProfile()
        httpProfile.endpoint = "sms.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = sms_client.SmsClient(cred, "", clientProfile) 

        req = models.SendSmsRequest()
        numbers = []
        if type(number) == str:
            numbers.append('+86'+number)
        if type(number) == list:
            for n in number:
                numbers.append('+86'+n)
        params = {
            "PhoneNumberSet": numbers,
            "TemplateID": TemplateID,
            "Sign": Sign ,
            "TemplateParamSet": TemplateParamSet,
            "SmsSdkAppid":"1400306067"
        }
        params = json.dumps(params)

        req.from_json_string(params)

        resp = client.SendSms(req) 
        print(resp.to_json_string()) 

    except TencentCloudSDKException as err: 
        print(err) 

get this error

{"SendStatusSet": [{"SerialNo": "", "PhoneNumber": "+8615216852305", "Fee": 0, "SessionContext": "", "Code": "FailedOperation.SignatureIncorrectOrUnapproved",
"Message": "signature format is incorrect or signature is not approved"}], "RequestId": "eaa09828-dc16-44dc-9d13-aac25b9a0a49"}
zqfan commented 4 years ago

Please report this issue in Management Console (https://console.cloud.tencent.com/) to SMS product, the FailedOperation.SignatureIncorrectOrUnapproved code is returned by SMS.

SDK ensures the signature to be correct, even if it fails, AuthFailure.SignatureFailure should be returned.