Firebase Facebook 个人资料图片 (photoURL) 显示标准 Facebook 个人资料图片

时间:2021-01-08 18:35:31

标签: firebase image facebook flutter profile

我在互联网上寻找我的问题的答案,但是,我找不到。因此,我与你们联系:

我的问题:当我通过 Firebase(使用 flutter_facebook_login 插件)登录 Facebook 时,我可以完美地检索除 photoURL 之外的所有数据。每当我尝试在我的 UI 中显示个人资料图片时,我最终都会得到 facebook 的标准个人资料图片,而不是用户当前使用的那个。我有什么想法可以改变吗?提前致谢!

我用来显示图片的代码:

Image(image: NetworkImage(widget.user.photoUrl)

我自己编码的 Facebook 登录代码:

class AuthService {
      final _auth = FirebaseAuth.instance;
    
      Stream<FirebaseUser> get currentUser => _auth.onAuthStateChanged;
      Future<AuthResult> signInWithCredential(AuthCredential credential) =>
          _auth.signInWithCredential(credential);
    }
    
    final facebookLogin = FacebookLogin();
    final authService = AuthService();
    
    Future<FirebaseUser> loginFacebook() async {
      facebookLogin.loginBehavior = FacebookLoginBehavior.webViewOnly;
    
      final result =
          await facebookLogin.logInWithReadPermissions(['email', 'public_profile']);
    
      switch (result.status) {
        case FacebookLoginStatus.loggedIn:
          final FacebookAccessToken accessToken = result.accessToken;
          print('''
              Logged in!
              
              Token: ${accessToken.token}
              User id: ${accessToken.userId}
              Expires: ${accessToken.expires}
              Permissions: ${accessToken.permissions}
              Declined permissions: ${accessToken.declinedPermissions}
              ''');
          break;
    
        case FacebookLoginStatus.cancelledByUser:
          print('Login cancelled by the user.');
          break;
    
        case FacebookLoginStatus.error:
          print('Something went wrong with the login process.\n'
              'Here\'s the error Facebook gave us: ${result.errorMessage}');
          break;
      }
    
      // define Userdata
      //final result = await facebookLogin.logInWithReadPermissions(['email']);
      final FacebookAccessToken fbToken = result.accessToken;
      final AuthCredential credential =
          FacebookAuthProvider.getCredential(accessToken: fbToken.token);
      final _result = await authService.signInWithCredential(credential);
    
      print('${_result.user}');
      return _result.user;
    }

0 个答案:

没有答案