Flutter Google 登录错误未被捕获
Posted
技术标签:
【中文标题】Flutter Google 登录错误未被捕获【英文标题】:Flutter Google Sign In Error Not Being Caught 【发布时间】:2020-10-31 02:19:55 【问题描述】:我正在使用 google 登录和 firebase 将身份验证集成到我的应用中。但是我面临的问题是,当我取消登录时(在我关闭弹出窗口的意义上),我得到一个
PlatformException (PlatformException(sign_in_canceled, com.google.GIDSignIn, The user canceled the sign-in flow.))
据我所知,这应该会发生,尽管我面临的问题是我无法捕捉到错误。以下是我尝试捕获此错误的几种方法:
Future loginWithGoogle() async
final GoogleSignIn googleSignIn = GoogleSignIn();
var account;
try
account = await googleSignIn.signIn();
on PlatformException catch (e)
print('\n\n\n\n\n AN ERROR OCCURED \n\n\n\n\n');
print(e.message);
final AuthResult result = await _auth
.signInWithCredential(GoogleAuthProvider.getCredential(
idToken: (await account.authentication).idToken, accessToken: (await account.authentication).accessToken));
setState(()
_firestore.collection('Users').document('$result.user.uid').setData(
'Profile Picture': result.user.photoUrl,
'Name': result.user.displayName,
'Email ID': result.user.email,
'Phone Number': result.user.phoneNumber,
);
isAuthenticating = true;
);
if (result.user.phoneNumber == null)
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => PhoneRegistrationScreen(
result: result,
),
),
);
发生错误时不打印任何内容。 我还尝试使用 catchError() 回调来捕获错误:
account = await googleSignIn.signIn().catchError((error)
print('AN ERROR OCCURED');
);
同样,发生错误时它不会打印任何内容。
非常感谢大家,非常感谢您的帮助!
【问题讨论】:
发布错误的整个堆栈跟踪 【参考方案1】:我已经修复了这个错误,并且我发现.catchError()
回调没有在调试模式下被调用(当你点击 VSCode 中的Run->Start Debugging
按钮时)。
但是,当您输入 flutter run -d 时,.catchError()
方法将被回调,因为它未处于调试模式。
要获取您喜欢的模拟器的代码,请将这行代码粘贴到终端中:
instruments -s devices
如果这不起作用,您也可以尝试粘贴:
xcrun simctl list
.catchError()
方法将与以前不同地被调用,其中的代码将按预期执行!
此外,应用程序不会再因PlatformException()
而崩溃,而是您会得到这样的日志:
[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The getter 'uid' was called on null.
Receiver: null
我在 Google 登录中也遇到过这个问题,.catchError()
没有被调用!
总之,如果你在处理 Firebase Authentication 的错误时遇到了一些错误,你应该首先尝试通过终端运行。谢谢,我希望这会有所帮助!
【讨论】:
以上是关于Flutter Google 登录错误未被捕获的主要内容,如果未能解决你的问题,请参考以下文章
使用 Flutter,如何在单独的登录页面小部件中显示在 AuthService 类中捕获的 Firebase Auth 错误消息?
在 Flutter 中捕获云 Firestore 文档快照错误
在 Flutter 中使用 Google 登录的错误 403 受限客户端