我正在使用Reactive原住民,我一次又一次地在同一个问题上停留。
此代码使用axios。我不知道为什么它总是不确定地返回。我正确地写了我所有的twilio ids。
我用的是无服务器的twilio,它起了作用,但我不知道如何才能改变它。如果我不能再使用这个代码,请告诉我是否有其他好的方法。我不知道如何使用node.js。我很感谢你的帮助。
这是密码。
Fetch.js
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true,
});
exports.default = void 0;
var _querystring = _interopRequireDefault(require('querystring'));
var _axios = _interopRequireDefault(require('axios'));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {default: obj};
}
class Fetch {
constructor({twilioServiceSid, twilioAccountSid, twilioAuthToken}) {
const fetch = _axios.default.create({
baseURL: `https://verify.twilio.com/v2/Services/${twilioServiceSid}`,
auth: {
username: twilioAccountSid,
password: twilioAuthToken,
},
});
this.fetch = fetch;
}
async post({path, payload}) {
try {
const obj = {
To: payload.phone,
Channel: 'sms',
};
if ('code' in payload) {
obj['Code'] = payload.code;
}
const {status, data} = await this.fetch.request({
method: 'POST',
url: path,
data: _querystring.default.stringify(obj),
});
return {
status,
data,
};
} catch (error) {
return error;
}
}
}
exports.default = Fetch;Verify.js
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true,
});
exports.default = void 0;
var _phone = _interopRequireDefault(require('phone'));
var _fetch = _interopRequireDefault(require('./fetch'));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {default: obj};
}
class Serify {
constructor({twilioServiceSid, twilioAccountSid, twilioAuthToken}) {
this.fetch = new _fetch.default({
twilioServiceSid,
twilioAccountSid,
twilioAuthToken,
});
this.twilioAccountSid = twilioAccountSid;
this.twilioAuthToken = twilioAuthToken;
}
async start({phone, country}) {
try {
const number = (0, _phone.default)(phone, country ? country : 'USA');
if (!number) {
throw new Error(
'Invalid phone number. Please provide the country code in an ISO-3166 alpha 3 format.',
);
}
const response = await this.fetch.post({
path: 'Verifications',
payload: {
phone: number,
},
});
return {
code: response.status,
data: response.data,
};
} catch (error) {
return new Error(error);
}
}
async verify({phone, country, code}) {
try {
const number = (0, _phone.default)(phone, country ? country : 'USA');
if (!number) {
throw new Error(
'Invalid phone number. Please provide the country code in an ISO-3166 alpha 3 format.',
);
}
if (code.length <= 3) {
throw new Error('Invalid SMS code.');
}
const response = await this.fetch.post({
path: 'VerificationCheck',
payload: {
phone: number,
code: code.toString(),
},
});
return {
code: response.status,
data: response.data,
};
} catch (error) {
return new Error(error);
}
}
}
exports.default = Serify; const verify = new Serify({
twilioServiceSid: '',
twilioAccountSid: '',
twilioAuthToken: '',
});
try {
const ss = await verify.start({
phone: '+1456123123',
});
console.log(ss);
} catch (e) {
console.log(e);
}发布于 2021-08-24 01:53:54
两位开发人员在这里传道。
我不知道你说的是哪一部分还没有定义。但是,这里还有一个更大的问题。
构建本机应用程序时,不能将Twilio凭据嵌入应用程序中,而不能从应用程序直接向Twilio发出API请求。恶意用户可以解压缩应用程序、提取帐户凭据并滥用Twilio帐户。
您不应该从应用程序中发出API请求。相反,您应该构建一个服务器端代理,该代理存储Twilio凭据并发出API请求,这是您从应用程序触发的。
对于Twilio验证和反应原住民,我没有这方面的例子,但是理论和从反应性应用程序发送短信是一样的。
如果您已经成功地使用实现了这个功能,那么您应该回到那个版本。如果你在这方面有困难,我会问一个新问题。
https://stackoverflow.com/questions/68900236
复制相似问题