firebase - getter 'token' 在使用 facebook 登录的 null firebase auth 上被调用 - Flutter

标签 firebase flutter firebase-authentication facebook-login

我正在尝试使用 facebook 登录 Firebase。

我正在使用 firebaseauth:0.7.0 和 flutter_facebook_login:

这是我的 facebook 登录功能:

  startFacebookLogin() async {
    var facebookLogin = FacebookLogin();
    var result = await facebookLogin
        .logInWithReadPermissions(['email', 'public_profile']);
    FacebookAccessToken myToken = result.accessToken;
    AuthCredential credential =
        FacebookAuthProvider.getCredential(accessToken: myToken.token);
    FirebaseUser firebaseUser =
        await FirebaseAuth.instance.signInWithCredential(credential);
    createProfile(user);
  }

这里我得到了这个错误:

E/flutter (19097): [ERROR:flutter/shell/common/shell.cc(186)] Dart Error: Unhandled exception:
E/flutter (19097): NoSuchMethodError: The getter 'token' was called on null.
E/flutter (19097): Receiver: null
E/flutter (19097): Tried calling: token
E/flutter (19097): #0      Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:50:5)
E/flutter (19097): #1      _SignUpFirst.startFacebookLogin (package:tripmate/pages/signup_first.dart:40:65)
E/flutter (19097): <asynchronous suspension>
E/flutter (19097): #2      _SignUpFirst.build.<anonymous closure> (package:tripmate/pages/signup_first.dart:254:27)
E/flutter (19097): #3      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
E/flutter (19097): #4      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
E/flutter (19097): #5      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
E/flutter (19097): #6      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
E/flutter (19097): #7      TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:175:7)
E/flutter (19097): #8      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9)
E/flutter (19097): #9      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12)
E/flutter (19097): #10     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11)
E/flutter (19097): #11     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:180:19)
E/flutter (19097): #12     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22)
E/flutter (19097): #13     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7)
E/flutter (19097): #14     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7)
E/flutter (19097): #15     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7)
E/flutter (19097): #16     _invoke1 (dart:ui/hooks.dart:173:13)
E/flutter (19097): #17     _dispatchPointerDataPacket (dart:ui/hooks.dart:127:5)
I/System.out(19097): (HTTPLog)-Static: isSBSettingEnabled false
I/System.out(19097): (HTTPLog)-Static: isSBSettingEnabled false

任何人都请帮助我。

最佳答案

您应该在身份验证之前检查登录响应状态:

    var fbLogin = FacebookLogin();

    var result =
        await fbLogin.logInWithReadPermissions(['email', 'public_profile']);

    if (result.status == FacebookLoginStatus.loggedIn) {
      FacebookAccessToken myToken = result.accessToken;
      AuthCredential credential =
          FacebookAuthProvider.getCredential(accessToken: myToken.token);

      var user = await FirebaseAuth.instance.signInWithCredential(credential);
    }

此外,尝试将 firebase_auth 更新到最新版本(目前为 0.8.1+4)。

关于firebase - getter 'token' 在使用 facebook 登录的 null firebase auth 上被调用 - Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54911260/

相关文章:

ios - 如何检查用户是否具有有效的 Auth Session Firebase iOS?

dart - Flutter 将对象传递给有状态的小部件

angular - 您如何确定用户是否已在 Angular Firebase 中通过身份验证?

php - 如何使用 PHP 从 Firebase 数据库中获取数据?

java - 如何将不同 Activity 的数据保存到同一个表?

angularjs - FIREBASE 警告 : Exception was thrown by user callback. 错误 : [$rootScope:inprog] http://errors. angularjs.org/1.4.7/$rootScope/inprog?p0=%24digest

swift - 避免 iOS 上的 Firebase/BoringSSL 控制台日志

ios - Firebase 3 更新本地缓存

dart - 将当前文档 ID 传递给 detailsPage

flutter - FormKey 在空值上使用 Null 检查运算符时出错