2016-04-14 74 views
2

我试图通过Twilio API发送短信,但是当我通过jQuery在我的应用程序使用它发送短信的投掷通过TWILIO API

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); 
     } 
    }); 
    }); 
    }); 

回答

1

Twilio开发者传道这里。

我不确定您是否从某处复制了上述代码,但缺少认证。只是传递用户名和密码不会这样做。

因为您使用的是JavaScript,所以我认为使用Node.js作为发送SMS消息的后端是合理的。本教程SMS and MMS Notifications将为您提供开始所需的一切。

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

如果您还有任何疑问,请查看并通知我。

UPDATE

我觉得我应该更新此为您发布另一种答案说的代码工作没有服务器端的技术,但是,这样做是非常糟糕的想法,我会解释为什么。

在您的代码中,您将JavaScript上的SID和Auth Token内联传递,这意味着任何对您的代码执行了视图源代码的人也将能够看到该代码。 Twilio只支付您使用的费用,而Twilio则可以通过您的sid和令牌的使用来追踪。

如果有人要把手放在那双令牌上,他们可以使用您的帐户来做同样的事情,因此可能会损害您的帐户。把它看作是一个用户名和密码。你不希望那些纯文本的权利?

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

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

+0

但后来我是怎么能够从twilio网站直接发送短信,也可以我使用Spring作为我的服务器端。有没有什么代码可以帮我解决这个问题 –

-1

此代码的工作,即使没有在服务器上使用什么:

<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> 
+3

这段代码唯一的问题就是它暴露了你的账号密码,因此允许任何一个查看源代码的人得到这些密码并使用你的账号信息来使用Twilio。 –

+0

对于一个测试目的它的好处,不像你说的,它不会工作没有服务器 –

+1

嗨拉玛,我不认为我曾经说过,没有服务器,它不会工作,但看看我更新的答案为您提供有关如何在Spring中创建服务器版本的信息 –