我正在尝试使用Firebase功能实现身份节点电话验证,并且我的应用程序以react-native方式将消息发送到正确的手机,但是由于某种原因,我从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/>
);
}
}
答案 0 :(得分:0)
这里是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 />;
}
}
让我知道是否有帮助。