无法通过Sinch发送SMS:HTTP Error 401 Unauthorized问题求助
问题
我想通过Sinch发送短信,已经在Sinch官网注册并获取了app_key和app_secret,但执行发送短信的代码时一直报错,不管号码带不带国家区号,都会出现HTTP Error 401: Unauthorized错误。
代码示例
import time from time import sleep from sinchsms import SinchSMS # 发送短信函数 def sendSMS(): # 填写相关信息 # app_key和app_secret需在Sinch官网注册应用后获取 number = '+91XXXXXXXXX' app_key = 'KEY_ID' app_secret = 'Key_secret' # 要发送的消息内容 message = 'Hello Message!!!' client = SinchSMS(app_key, app_secret) print("Sending '%s' to %s" % (message, number)) response = client.send_message(number, message) message_id = response['messageId'] response = client.check_status(message_id) # 循环检查直到状态变为成功 while response['status'] != 'Successful': print(response['status']) time.sleep(1) response = client.check_status(message_id) print(response['status']) if __name__ == "__main__": sendSMS()
报错信息
Sending 'Hello Message!!!' to +91XXXXXXXXXX --------------------------------------------------------------------------- HTTPError Traceback (most recent call last) <ipython-input-47-97ce28144276> in <cell line: 35>() 34 35 if __name__ == "__main__": ---> 36 sendSMS() 8 frames /usr/lib/python3.10/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs) 641 class HTTPDefaultErrorHandler(BaseHandler): 642 def http_error_default(self, req, fp, code, msg, hdrs): ---> 643 raise HTTPError(req.full_url, code, msg, hdrs, fp) 644 645 class HTTPRedirectHandler(BaseHandler): HTTPError: HTTP Error 401: Unauthorized
解决方案
401 Unauthorized错误本质是身份验证失败,以下是针对性的排查和解决步骤:
确认app_key和app_secret完全正确
检查代码里填写的app_key和app_secret是否和Sinch控制台复制的完全一致,注意区分大小写,不要包含多余的空格或特殊字符,很多时候是复制时的小失误导致验证失败。验证账号状态与余额
确认Sinch账号已完成邮箱激活(试用账号需此步骤),付费账号要检查余额是否充足,余额不足也可能触发权限类错误。检查区域发送权限
确认你的账号允许向目标国家(如代码中的+91印度)发送短信,部分区域可能需要额外申请开通,试用账号也可能限制部分国家的短信服务。核对SDK版本兼容性
你使用的sinchsms库可能是旧版本,Sinch API可能已更新,建议更换为官方推荐的最新SDK进行开发,避免因API版本不匹配导致认证失败。测试直接调用REST API
部分旧SDK的认证逻辑可能不符合当前Sinch API要求,可以尝试直接调用REST API排查:- 通过app_key和app_secret获取Bearer Token
- 用Token作为Authorization头调用短信发送接口
以此确认是否是SDK的认证逻辑存在问题。
内容的提问来源于stack exchange,提问作者MONEET
相关产品推荐
相关产品推荐

