我在互联网上寻找我的问题的答案,但是,我找不到。因此,我与你们联系:
我的问题:当我通过 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;
}