Данные объекта null SMS все еще отправлено twilio authy
Я пытаюсь реализовать проверку подлинности телефона с помощью узла-узла с помощью функций firebase, и мое приложение реагирует на то, что сообщение отправляется на правильный мобильный телефон, но по какой-то причине данные, которые я получаю от API, лишены каких-либо идей.
Мои функции Api Firebase
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 ответ
Twilio разработчик евангелист здесь.
Из того, что я вижу в библиотеке Authy Node, которую я предполагаю, вы используете, отправка запроса API не возвращает Promise. Вместо этого он создается с запросом и отвечает на асинхронные запросы, используя только обратные вызовы. Вы имеете дело с обратным вызовом, но вы возвращаете результат вызова асинхронной функции, которая 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 />;
}
}
Дайте мне знать, если это поможет.