Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 使用Firebase和Flatter解决Facebook身份验证问题_Flutter_Dart_Mobile_Facebook Authentication - Fatal编程技术网

Flutter 使用Firebase和Flatter解决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

当我想登录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 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。