我正在尝试通过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);
}
});
});
});
答案 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>