2016-04-14 89 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中創建服務器版本的信息 –