我正在使用 Twilio 帐户向用户发送短信。我已经通过执行以下命令安装了 SDK。
composer require twilio/sdk
我正在使用以下代码片段发送消息。
public function sendSms($data)
{
// Your Account SID and Auth Token from twilio.com/console
$account_sid = 'sid';
$auth_token = 'token';
$twilio_number = "number";
$client = new Client($account_sid, $auth_token);
return $client->messages->create(
$data['phone'], array(
'from' => $twilio_number,
'body' => $data['message'],
)
);
}
根据 Twilio 文档,此代码应该使用我的有效凭据发送消息,但我收到以下错误。
[HTTP 401] 无法创建记录: Authenticate85/var/www/art/api/vendor/twilio/sdk/Twilio/Version.php
我研究过这个问题,但没有得到指导;有什么线索吗? 注意: 我的 Twilio 帐户中有余额。
就我自己而言,我发现我的 Twilo 信用额度已用完,因此 Twilo 自动暂停了我的帐户。我充值了我的 Twilo 帐户,一切正常。
这里是 Twilio 开发者布道者。由于这篇文章有 13k+ 的浏览量并且没有官方答案(隐藏在 评论),我想为那些有相同想法的人解决这个问题 问题。
正如@dwhitz 提到的,
HTTP 401
是一个未经授权的错误(又名无授权)。
如果您遇到相同的错误,这可能意味着您的凭据设置不正确。
对 Twilio 的 REST API 的所有请求都需要进行身份验证。 Twilio 支持两种形式的身份验证(均使用 HTTP 基本身份验证),因此您可以选择任一选项:
1。账户SID和账户Token
用户名 | 密码 |
---|---|
账户ID | 验证令牌 |
这些可以在 Twilio 控制台的帐户仪表板上找到。
2。 API 密钥
用户名 | 密码 |
---|---|
API 密钥 SID | API密钥秘密 |
您可以在 Twilio 控制台上的设置 -> API 密钥中创建 API 密钥。
您现在应该拥有(帐户 SID + 帐户令牌)或(API 密钥 SID + API 密钥密钥)。 这些信息应该隐藏并且不公开(不要与你的同事分享或将它们推送到 GitHub)。
通过以防止未经授权的访问的方式存储它们来保护它们,例如环境变量。以下是使用第一种形式(帐户 SID 和帐户令牌)的示例。
echo "export TWILIO_ACCOUNT_SID='ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'" > twilio.env
echo "export TWILIO_AUTH_TOKEN='your_auth_token'" >> twilio.env
source ./twilio.env
确保将 twilio.env 添加到您的 .gitignore
echo "twilio.env" >> .gitignore
set TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
set TWILIO_AUTH_TOKEN=your_auth_token
如果您收到
HTTP 401
错误,这可能是最大的失败点。 您需要确保正确加载凭据。
现在,这取决于您的语言,但由于这个问题是 PHP 语言,我将使用
getenv()
以该语言回答它。
$sid = getenv('TWILIO_ACCOUNT_SID');
$token = getenv('TWILIO_AUTH_TOKEN');
此后,您将像这样初始化 Twilio 客户端:
$client = new Client($sid, $token);
PS。还有其他方法可以在 PHP 中使用环境变量,因此如果您想以其他方式进行操作,请查看此博客文章。
此时,如果您仍然遇到
HTTP 401
,那么您通过环境变量存储/读取凭据的方式可能存在问题。
要调试,您可以添加 print/echo 语句来输出环境变量的数据。如果不存在数据,您可能需要对环境变量的使用进行更多研究。
此错误是在 Twilio otp 验证期间发生的,当您输入错误的 Twilio 凭据时会出现此错误,在这种情况下会发生此错误,要解决此错误,请仔细检查您的 Twilio 凭据,使其正确,希望完全解决您的问题。 就我而言,我尝试使用旧的不正确凭据验证 otp,我只是在创建新的 Twilio 帐户后添加了新凭据,我的问题已解决。 我希望这对你也有用。
可能是由于 Twilio 资金不足或免费试用期满而发生。
我为此受了好几天的苦,但相信我,这是黑魔法! 错误是如何发生的:您从 twilio 复制令牌,它会在剪贴板中自动修改。它也发生在记事本中,如此崇高。 解决方案:在twilio网站上进入浏览器的调试模式并通过html div元素复制令牌,这样它将正确复制到您计算机的剪贴板。 有人解释一下我不懂巫术。