【发布时间】:2021-02-15 01:28:41
【问题描述】:
我使用了 Firebase 手机身份验证,验证后,我想更新登录用户的个人资料详细信息。所以我写了一个云函数来做这件事,然后在函数返回响应后调用user.reload()方法。但令我惊讶的是,我的应用程序在我的控制台上被注销了:
[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:[firebase_auth/user-token-expired] 用户的凭据不再有效。用户必须重新登录。
我做了一些研究,发现这是一种安全措施,所以我不得不重新验证用户身份。
这就是我所做的:
Future<Response> updateUserprofile({context, name, email}) async{
User _user = _firebaseAuth.currentUser;
Response response = Response(success: false);
Provider.of<AuthenticationProvider>(context, listen: false).loading = true;
try{
HttpsCallableResult functionResponse = await createUser.call({'displayName': name, 'email':email});
response.success = functionResponse.data['success'];
response.message = functionResponse.data['message'];
_user.reload();
AuthCredential credential = AuthCredential(providerId: PhoneAuthProvider.PROVIDER_ID, signInMethod: PhoneAuthProvider.PHONE_SIGN_IN_METHOD);
await user.reauthenticateWithCredential(credential);
Provider.of<AuthenticationProvider>(context, listen: false).loading = false;
return response;
}catch(e){
Provider.of<AuthenticationProvider>(context, listen: false).loading = false;
response.message = e.message;
return response;
}
}
但我的控制台上仍然出现同样的错误:
[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:[firebase_auth/user-token-expired] 用户的凭据不再有效。用户必须重新登录。
【问题讨论】:
标签: flutter firebase-authentication google-cloud-functions