【发布时间】:2015-08-12 06:34:56
【问题描述】:
我在解析云上使用 twilio 对我的 iPhone 应用程序进行用户电话身份验证,但是当我调用云代码以从测试电话号码 (+15005550006) 发送代码消息时,它给了我一个错误,提示“来自电话号码 +15005550006 不是您帐户的有效、支持 SMS 的呼入电话号码或短代码。(代码:141,版本:1.7.5)"
到目前为止,我的云代码是:
var twilioAccountSid = 'my-account-sid';
var twilioAuthToken = 'my-auth-token';
var twilioPhoneNumber = '+15005550006';
var secretPasswordToken = '12345';
var language = "en";
var twilio = require('twilio')(twilioAccountSid, twilioAuthToken);
Parse.Cloud.define("sendCode", function(req, res) {
var phoneNumber = req.params.number;
phoneNumber = phoneNumber.replace(/\D/g, '');
if (!phoneNumber || (phoneNumber.length != 10 && phoneNumber.length != 11)) return res.error('Invalid Parameters');
Parse.Cloud.useMasterKey();
var query = new Parse.Query(Parse.User);
query.equalTo('username', phoneNumber + "");
query.first().then(function(result) {
var min = 1000; var max = 9999;
var num = Math.floor(Math.random() * (max - min + 1)) + min;
if (result) {
result.setPassword(secretPasswordToken + num);
result.set("language", language);
result.save().then(function() {
return sendCodeSms(phoneNumber, num, language);
}).then(function() {
res.success();
}, function(err) {
res.error(err);
});
} else {
var user = new Parse.User();
user.setUsername(phoneNumber);
user.setPassword(secretPasswordToken + num);
user.set("language", language);
user.setACL({});
user.save().then(function(a) {
return sendCodeSms(phoneNumber, num, language);
}).then(function() {
res.success();
}, function(err) {
res.error(err);
});
}
}, function (err) {
res.error(err);
});
});
Parse.Cloud.define("logIn", function(req, res) {
Parse.Cloud.useMasterKey();
var phoneNumber = req.params.phoneNumber;
phoneNumber = phoneNumber.replace(/\D/g, '');
if (phoneNumber && req.params.codeEntry) {
Parse.User.logIn(phoneNumber, secretPasswordToken + req.params.codeEntry).then(function (user) {
res.success(user._sessionToken);
}, function (err) {
res.error(err);
});
} else {
res.error('Invalid parameters.');
}
});
function sendCodeSms(phoneNumber, code, language) {
var promise = new Parse.Promise();
twilio.sendSms({
to: '+91' + phoneNumber,//.replace(/\D/g, ''),
from: twilioPhoneNumber,//.replace(/\D/g, ''),
body: 'Your login code for AnyPhone is ' + code
}, function(err, responseData) {
if (err) {
console.log(err);
promise.reject(err.message);
} else {
promise.resolve();
}
});
return promise;
}
【问题讨论】:
-
您好,这里是 Twilio 开发人员宣传员。该电话号码有效,但似乎不是 Twilio 号码。你从哪里复制的?请检查上面没有错别字。
-
我从他们的博客/文档中复制了它。它对我一点用都没有,所以我改用 Nexmo。
-
您复制的数字只是一个样本号。您需要使用自己拥有的号码。
-
好的,所以没有免费的测试号。对吗?
-
当您创建试用帐户时,您将获得一个免费的测试编号,虽然数量有限,但可以很好地满足您的要求。
标签: javascript ios parse-platform cloud twilio