Twilio测试账号调用报错:Username can not be null 问题咨询
问题原因
报错Username can not be null的核心逻辑:
Environment.GetEnvironmentVariable()方法需要传入环境变量的名称(比如TWILIO_ACCOUNT_SID),但你直接传入了Account SID和Auth Token的具体字符串值,导致方法无法找到对应环境变量,返回null。- 当
TwilioClient.Init接收的第一个参数(对应认证用户名的Account SID)为null时,Twilio SDK会抛出认证异常,提示用户名不能为空。
解决方案
方案1:正确使用环境变量(生产/测试均推荐)
- 先在系统或项目配置中设置环境变量:
- 变量名:
TWILIO_ACCOUNT_SID,值填写你的Twilio Account SID(即AC55c243bb54e20499e8268e62383981) - 变量名:
TWILIO_AUTH_TOKEN,值填写你的Twilio Auth Token(即d89eebebe27fd448a84647e900f66275)
- 变量名:
- 修改代码,传入环境变量名称:
// Find your Account SID and Auth Token at twilio.com/console // and set the environment variables. string TWILIO_ACCOUNT_SID = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID"); string TWILIO_AUTH_TOKEN = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN"); TwilioClient.Init(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN); var message = MessageResource.Create( body: "This is the ship that made the Kessel Run in fourteen parsecs?", from: new Twilio.Types.PhoneNumber("+923212294138"), to: new Twilio.Types.PhoneNumber("+92311344594138") ); Console.WriteLine(message.Sid);
方案2:直接硬编码(仅临时测试使用,生产环境禁止)
如果只是临时快速测试,可以直接将SID和Token赋值给变量(注意:生产环境硬编码敏感信息会导致数据泄露,绝对禁止):
// 仅用于临时测试,生产环境请勿硬编码敏感信息 string TWILIO_ACCOUNT_SID = "AC55c243bb54e20499e8268e62383981"; string TWILIO_AUTH_TOKEN = "d89eebebe27fd448a84647e900f66275"; TwilioClient.Init(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN); var message = MessageResource.Create( body: "This is the ship that made the Kessel Run in fourteen parsecs?", from: new Twilio.Types.PhoneNumber("+923212294138"), to: new Twilio.Types.PhoneNumber("+92311344594138") ); Console.WriteLine(message.Sid);
额外注意事项
- 测试账号的
from号码必须是Twilio控制台提供的测试号码,不能使用自己的普通手机号,否则会触发号码验证错误。 - 测试账号的
to号码必须是在Twilio控制台添加并验证过的号码,否则无法发送短信。
内容的提问来源于stack exchange,提问作者Tabor
相关产品推荐
相关产品推荐

