通过TWILIO API发送短信

时间:2016-04-14 10:47:09

标签: jquery ajax twilio

我正在尝试通过Twilio API发送短信但是当我在我的应用程序中通过Jquery使用它时抛出

https://api.twilio.com/2010-04-01/Accounts/SID/Messages.json 401 (UNAUTHORIZED)

但是当我通过他们的网站使用相同的SID和身份验证令牌时,我可以发送短信。

请帮助您完成这项工作。

我的代码:

$(document).ready(function() {

$("#btnSubmit").click(function(){
    $.ajax({
      type: 'POST',
      username: 'SID',
      password: 'KEY',
      url: 'https://api.twilio.com/2010-04-01/Accounts/SID/Messages.json',        
      xhrFields: {
        withCredentials: true
      },
      data: {
        "To" : "+918967385884",
        "From" : "+12016902194",
        "Body" : "Hello World"
      },
      success: function(data) {
        console.log(data);
      },
      error: function(data) {
        console.log(data);
      }
    });
    });
    });

2 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

我不确定你是否从某个地方复制了上面的代码,但是你错过了身份验证。只是传递用户名和密码就不行了。

因为您使用的是JavaScript,所以我认为使用Node.js作为发送短信的后端是有意义的。本教程SMS and MMS Notifications将为您提供入门所需的一切。

最重要的是,它使用Twilio Library for Node.js,这将使您的请求更加简单。

如果您还有任何问题,请查看并告知我们。

<强>更新

我觉得我应该更新这个,因为你发布了另一个答案,说代码在没有服务器端技术的情况下工作,但是,这样做是非常糟糕的想法,我会解释原因。

在你的代码中,你在你的javascript上传递了内联的SID和Auth Token,这意味着任何对你的代码进行了查看源的人也能够看到它。使用Twilio,您只需支付使用的费用,Twilio可以通过使用您的sid和令牌来跟踪它。

如果有人想要获得这对代币,他们可以使用您的帐户执行相同的操作,从而危及您的帐户。将其视为用户名和密码。你不想要那些纯文本吗?

这就是为什么我建议有一个后端,因为这样,除了开发人员之外,没有人可以访问它。

另外,要回答您的问题,您可以完全使用Spring作为后端。这是一个tutorial that shows you how to do it

答案 1 :(得分:0)

即使不在服务器上使用任何内容,此代码仍可正常运行:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<input type="button" id="btnSubmit" value="test">
<script>
    $(document).ready(function() {
        $("#btnSubmit").click(function(){
            // Your Twilio credentials
            var SID = "ACxxxxx"
            var Key = "aaxxxx"

            $.ajax({
                type: 'POST',
                url: 'https://api.twilio.com/2010-04-01/Accounts/' + SID + '/Messages.json',
                data: {
                    "To" : "+918967385884",
                    "From" : "+12016902194",
                    "Body" : "Hello World"
                },
                beforeSend: function (xhr) {
                    xhr.setRequestHeader ("Authorization", "Basic " + btoa(SID + ':' + Key));
                },
                success: function(data) {
                    console.log(data);
                },
                error: function(data) {
                    console.log(data);
                }
            });
        });
    });
</script>