Данные объекта null SMS все еще отправлено twilio authy - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь реализовать проверку подлинности телефона с помощью узла-узла с помощью функций firebase, и мое приложение реагирует на исходное сообщение, которое отправляется на правильный мобильный телефон, но по какой-то причине данные, которые я получаю от API, лишены каких-либо идей.

Мои функции Firebase Api

import * as functions from 'firebase-functions';
const authy = require('authy')('mySecret');


export const getCode = functions.https.onCall((data, context) => {
  const {
     number, countryCode
  } = data;

 return authy.phones().verification_start(number, countryCode, { via: 
'sms', locale: 'en', code_length: '4' }, (err: any, res: any) => {
    if (err) {
        throw new functions.https.HttpsError(err);
    }
    return res;
});
});

, и это мой звонок из моего приложения

export default class test extends Component {

constructor() {
 super();
}

 componentWillMount() {
 const getCode = firebase.functions().httpsCallable('getCode');
 getCode({number: 'theCorrectNumber', countryCode: '44'})
   .then(function (result) {
     const data = result;
     console.log(data)
   }).catch( function (error){
   console.log(error)
 })
}

render() {
 return (
  <View/>
 );
}
}

1 Ответ

0 голосов
/ 25 января 2019

Разработчик Twilio здесь.

Из того, что я вижу в библиотеке Authy Node , которую я предполагаю, вы используете, отправка запроса API не возвращает Promise. Вместо этого он построен с request и отвечает на асинхронные запросы, используя только обратные вызовы. Вы имеете дело с обратным вызовом, но вы возвращаете результат вызова асинхронной функции, который равен null, а не результат обратного вызова.

Возможно, включение обратного вызова в качестве части вызова функции будет работать лучше:

import * as functions from 'firebase-functions';
const authy = require('authy')('mySecret');

export const getCode = functions.https.onCall((data, callback) => {
  const { number, countryCode } = data;

  return authy
    .phones()
    .verification_start(
      number,
      countryCode,
      { via: 'sms', locale: 'en', code_length: '4' },
      callback
    );
});

Затем вы можете использовать его так:

export default class test extends Component {
  constructor() {
    super();
  }

  componentWillMount() {
    const getCode = firebase.functions().httpsCallable('getCode');
    getCode({ number: 'theCorrectNumber', countryCode: '44' }, (err, res) => {
      if (err) {
        throw new functions.https.HttpsError(err);
      }
      const data = res;
      console.log(data);
    });
  }

  render() {
    return <View />;
  }
}

Дайте мне знать, поможет ли это вообще.

...