我正在尝试使用 firebase 验证电话号码。但是从异步函数中得到了意想不到的结果。这是我的代码:
bool isVerificationSuccess = false;
Future<bool> verifyUserPhoneNumber(String phoneNumber) async {
await FirebaseAuth.instance.verifyPhoneNumber(
phoneNumber: phoneNumber,
timeout: Duration(seconds: 60),
verificationCompleted: (credential) => verificationComplete(credential),
verificationFailed: (authException) => verificationFailed(authException),
codeAutoRetrievalTimeout: (verificationId) =>
codeAutoRetrievalTimeout(verificationId),
codeSent: (verificationId, [code]) => smsCodeSent(verificationId, [code]),
);
print("Status from service : $isVerificationSuccess");
return isVerificationSuccess;
}
verificationComplete(AuthCredential credential) async {
FirebaseUser user = await FirebaseAuth.instance.currentUser();
user.linkWithCredential(credential).then((_) {
print("User Successfully Linked");
isVerificationSuccess = true;
}).catchError((e) {
print("Linking Error : ${e.toString()}");
});
}
这是输出:
Status from service : false
User Successfully Linked
所以这里verifyUserPhoneNumber的函数甚至在完成之前就返回了,所以即使验证成功FirebaseAuth.instance.verifyPhoneNumber(),它也不会返回预期的数据(总是)。false这里有什么问题?