首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两次验证不起作用--不断返回未定义的

两次验证不起作用--不断返回未定义的
EN

Stack Overflow用户
提问于 2021-08-23 23:50:10
回答 1查看 168关注 0票数 0

我正在使用Reactive原住民,我一次又一次地在同一个问题上停留。

此代码使用axios。我不知道为什么它总是不确定地返回。我正确地写了我所有的twilio ids。

我用的是无服务器的twilio,它起了作用,但我不知道如何才能改变它。如果我不能再使用这个代码,请告诉我是否有其他好的方法。我不知道如何使用node.js。我很感谢你的帮助。

这是密码。

Fetch.js

代码语言:javascript
复制
'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

代码语言:javascript
复制
'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;
代码语言:javascript
复制
  const verify = new Serify({
    twilioServiceSid: '', 
    twilioAccountSid: '', 
    twilioAuthToken: '', 
  });
    try {
      const ss = await verify.start({
        phone: '+1456123123',
      });
      console.log(ss);
    } catch (e) {
      console.log(e);
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-24 01:53:54

两位开发人员在这里传道。

我不知道你说的是哪一部分还没有定义。但是,这里还有一个更大的问题。

构建本机应用程序时,不能将Twilio凭据嵌入应用程序中,而不能从应用程序直接向Twilio发出API请求。恶意用户可以解压缩应用程序、提取帐户凭据并滥用Twilio帐户。

您不应该从应用程序中发出API请求。相反,您应该构建一个服务器端代理,该代理存储Twilio凭据并发出API请求,这是您从应用程序触发的。

对于Twilio验证和反应原住民,我没有这方面的例子,但是理论和从反应性应用程序发送短信是一样的。

如果您已经成功地使用实现了这个功能,那么您应该回到那个版本。如果你在这方面有困难,我会问一个新问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68900236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档