Flutter 使用Firebase和Flatter解决Facebook身份验证问题
当我想登录facebook时,我可以访问facebook,但在我出现以下错误后:Flutter 使用Firebase和Flatter解决Facebook身份验证问题,flutter,dart,mobile,facebook-authentication,Flutter,Dart,Mobile,Facebook Authentication,当我想登录facebook时,我可以访问facebook,但在我出现以下错误后: [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type 'NoSuchMethodError' is not a subtype of type 'FutureOr<FirebaseUser>' <asynchronous suspension> _signin.build.<anonymous
[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type 'NoSuchMethodError' is not a subtype of type 'FutureOr<FirebaseUser>'
<asynchronous suspension>
_signin.build.<anonymous closure>
[错误:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:类型“NoSuchMethodError”不是类型“FutureOr”的子类型
_签名,建立。
这是我的auth.dart:
Future<FirebaseUser> facebookLogin() async {
try {
loading.add(true);
FacebookLoginResult facebookLoginResult = await _facebookLogin.logIn(['email']);
FacebookAccessToken facebookAccessToken = facebookLoginResult.accessToken;
AuthCredential authCredential = FacebookAuthProvider.getCredential
(accessToken: facebookAccessToken.token);
FirebaseUser user = (await _auth.signInWithCredential(authCredential)).user;
// updateUserDataGg(user);
print("user name: ${user.displayName}");
name = user.displayName;
email = user.email;
imageUrl = user.photoUrl;
loading.add(false);
return user;
} catch (error) {
return error;
}
}
Future facebookLogin()异步{
试一试{
加载。添加(true);
FacebookLoginResult FacebookLoginResult=等待_facebookLogin.logIn(['email']);
FacebookAccessToken FacebookAccessToken=facebookLoginResult.accessToken;
AuthCredential AuthCredential=FacebookAuthProvider.getCredential
(accessToken:facebookAccessToken.token);
FirebaseUser user=(wait_auth.signInWithCredential(authCredential)).user;
//updateUserDataGg(用户);
打印(“用户名:${user.displayName}”);
name=user.displayName;
email=user.email;
imageUrl=user.photoUrl;
加载。添加(假);
返回用户;
}捕获(错误){
返回误差;
}
}
打印不显示。你知道问题在哪里吗
非常感谢您不必这样做,因为如果facebook登录失败,您将不会得到通知,然后您将继续执行代码,这将导致一些问题。如果登录过程完成且没有任何错误,您应该检查FB和Firebase。最后,此错误意味着您期望的是
FutureOr
,但在执行返回NoSuchMethodError
的代码时出现错误。此错误来自以下行FirebaseUser user=(wait_auth.signInWithCredential(authCredential)).user代码>然后在catch bloc中,您应该抛出一个不返回错误的异常,或者正确处理它。谢谢您的回答。我对“谷歌签名”也有同样的想法,而且效果很好。您能告诉我如何检查FB和FireBase流程是否完成且没有任何错误吗?谢谢,您可以通过调用facebookLoginResult.status==FacebookLoginStatus.error来检查结果。还有什么是加载
?您正在捕获NoSuchMethodError
,这意味着您正在对一个无法识别该方法的对象调用一个方法。收到错误消息后,感谢您,这是哈希键的问题。解决方案是采用SHA1并转换为base64。再加上Facebook。