Twilio WhatsApp沙盒测试获取图片遇401错误(20003码)求助
问题分析与解决方法
MediaUrl0并非公开链接:你提到的
api.twilio.com开头的MediaUrl0不是公开AWS链接,它是Twilio API的媒体资源代理端点,无论沙盒还是正式环境,访问都必须携带Twilio账号的认证信息,这是你误解的核心点。20003错误本质是认证失败:这个错误码明确表示请求未通过Twilio的身份校验。哪怕用测试账号SID和令牌初始化了Client,也要确保访问媒体资源的方式正确:
- 不要直接发起普通HTTP请求访问MediaUrl0,而是通过Twilio Client的内置方法获取媒体内容;
- 如果一定要直接请求该URL,必须在请求头中添加Basic Auth,将测试账号SID作为用户名,认证令牌作为密码。
正确的媒体获取方式示例:
用Twilio Client处理的代码:from twilio.rest import Client from flask import request # 初始化Client(替换为你的测试账号信息) account_sid = '你的测试SID' auth_token = '你的测试令牌' client = Client(account_sid, auth_token) # 从Webhook请求中提取媒体SID media_sid = request.values.get('MediaSid0') if media_sid: # 通过Client获取并保存媒体文件 media = client.media(media_sid).fetch() with open('received_media.jpg', 'wb') as f: f.write(media.read())直接请求URL并携带认证的代码:
import requests from flask import request media_url = request.values.get('MediaUrl0') if media_url: response = requests.get( media_url, auth=('你的测试SID', '你的测试令牌') ) if response.status_code == 200: with open('received_media.jpg', 'wb') as f: f.write(response.content)沙盒环境无特殊权限:Twilio WhatsApp沙盒的媒体资源和正式环境遵循相同的认证规则,不存在无需认证的公开访问权限。
内容的提问来源于stack exchange,提问作者vulcanoid
相关产品推荐
相关产品推荐

