【发布时间】:2018-10-07 13:55:10
【问题描述】:
我用 TypeScript 编写了一个云函数,其中有 async 调用。
exports.validateOtp = functions.https.onCall((data,context)=>{
phoneNumber = data.phoneNumber;
otp = data.otp;
let email:string = data.email;
let password:string = data.password;
let displayName:string= data.displayName;
authFunction.otpValidation(phoneNumber,otp,(otpErr,otpValue) => {
if(otpErr){
console.error(otpErr);
return {otpErr};
}else{
return authFunction.createUser(email,false,phoneNumber,password,displayName,false,(err,value) => {
if(err)
{
console.error(err);
return Promise.reject(err);
}
else{
console.log(value);
return Promise.resolve(value);
}
});
}
});
});
下面是authFunction.otpValidation的实现
otpValidation(phoneNumber:string, otp:string,callback:Function){
let otpValidationApi:string = "https://<api>/verifyRequestOTP.php?authkey="+this.authKey+"&mobile="+phoneNumber+
"&otp="+otp;
https.get(otpValidationApi, (resp) => {
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
resp.on('end', () => {
let result = JSON.parse(data);
var y=result.type;
callback(null,y);
});
}).on("error",(err)=>{
console.log("Error: "+err.message);
});
}
我正在尝试通过 Android 应用捕获其输出/返回值:
private static FirebaseFunctions mFunctions = FirebaseFunctions.getInstance();
mFunctions.getHttpsCallable(nameOfFunction).call(data)
.continueWith(new Continuation<HttpsCallableResult, String>() {
@Override
public String then(@NonNull Task<HttpsCallableResult> task) throws Exception {
String result2 = (String) task.getResult().getData();
return result2;
}
});
然而,Android 代码中的 result2 变量总是返回 null,即使云函数按预期运行。
我哪里弄错了?
【问题讨论】:
-
什么是
authFunction.otpValidation? -
@FrankvanPuffelen 编辑了添加 authFunction.otpValidation 方法的问题。
标签: typescript firebase google-cloud-functions