Firebase_auth photoURL不工作。返回默认人物图像
颤振1.20.4; flatter_login_facebook:^0.2.1; firebase_认证:^0.18.1; firebase_核心:^0.5.0; 提供者:^4.3.2 显示名称和电子邮件正在工作,但photoURL返回以下内容: 我尝试在不同的设备上构建它,并尝试登录到不同的facebook帐户。 我的主屏幕Firebase_auth photoURL不工作。返回默认人物图像,firebase,flutter,firebase-authentication,facebook-authentication,Firebase,Flutter,Firebase Authentication,Facebook Authentication,颤振1.20.4; flatter_login_facebook:^0.2.1; firebase_认证:^0.18.1; firebase_核心:^0.5.0; 提供者:^4.3.2 显示名称和电子邮件正在工作,但photoURL返回以下内容: 我尝试在不同的设备上构建它,并尝试登录到不同的facebook帐户。 我的主屏幕 class _HomeState extends State<Home> { StreamSubscription<User> homeSt
class _HomeState extends State<Home> {
StreamSubscription<User> homeStateSubscription;
@override
void initState() {
var authBloc = Provider.of<AuthBloc>(context, listen: false);
homeStateSubscription = authBloc.currentUser.listen((fbUser) {
if (fbUser == null) {
Navigator.of(context)
.pushReplacement(MaterialPageRoute(builder: (context) => Login()));
}
});
super.initState();
}
@override
Widget build(BuildContext context) {
var authBloc = Provider.of<AuthBloc>(context);
return Scaffold(
body: Center(
child: StreamBuilder<User>(
stream: authBloc.currentUser,
builder: (context, snapshot) {
if (!snapshot.hasData) return CircularProgressIndicator();
print(snapshot.data.email);
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(snapshot.data.displayName,
style: TextStyle(fontSize: 35.0)),
SizedBox(
height: 20.0,
),
CircleAvatar(
backgroundImage: NetworkImage(
snapshot.data.photoURL + '?width=500&height500'),
radius: 60.0,
),
SizedBox(
height: 100.0,
),
SignInButton(Buttons.Facebook,
text: 'Sign out of Facebook',
onPressed: () => authBloc.logout())
],
);
}),
));
}
}
class\u HomeState扩展状态{
流动认购和流动认购;
@凌驾
void initState(){
var authBloc=Provider.of(上下文,侦听:false);
homeStateSubscription=authBloc.currentUser.listen((fbUser){
if(fbUser==null){
导航器(上下文)
.pushReplacement(MaterialPage路由(生成器:(上下文)=>Login());
}
});
super.initState();
}
@凌驾
小部件构建(构建上下文){
var authBloc=Provider.of(上下文);
返回脚手架(
正文:中(
孩子:StreamBuilder(
流:authBloc.currentUser,
生成器:(上下文,快照){
如果(!snapshot.hasData)返回CircularProgressIndicator();
打印(快照、数据、电子邮件);
返回列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
文本(snapshot.data.displayName,
样式:TextStyle(fontSize:35.0)),
大小盒子(
身高:20.0,
),
圆形(
背景图片:NetworkImage(
snapshot.data.photoURL+'?宽度=500和高度500',
半径:60.0,
),
大小盒子(
高度:100.0,
),
登录按钮(Buttons.Facebook、,
文字:“注销Facebook”,
onPressed:()=>authBloc.logout()
],
);
}),
));
}
}
这是一个集团
class AuthBloc {
final authService = AuthService();
final fb = FacebookLogin();
Stream<User> get currentUser => authService.currentUser;
loginFacebook() async {
final res = await fb.logIn(permissions: [
FacebookPermission.publicProfile,
FacebookPermission.email
]);
switch (res.status) {
case FacebookLoginStatus.Success:
print('It worked');
//Get Token
final FacebookAccessToken fbToken = res.accessToken;
//Convert to Auth Credential
final AuthCredential credential =
FacebookAuthProvider.credential(fbToken.token);
//User Credential to Sign in with Firebase
final result = await authService.signInWithCredentail(credential);
print('${result.user.displayName} is now logged in');
break;
case FacebookLoginStatus.Cancel:
print('The user canceled the login');
break;
case FacebookLoginStatus.Error:
print('There was an error');
break;
}
}
logout() {
authService.logout();
}
}
类AuthBloc{
final authService=authService();
final fb=FacebookLogin();
Stream get currentUser=>authService.currentUser;
loginFacebook()异步{
最终res=等待fb.登录(权限:[
FacebookPermission.publicProfile,
FacebookPermission.email
]);
开关(恢复状态){
案例FacebookLoginStatus。成功:
打印(“它工作了”);
//领取代币
最终FacebookAccessToken fbToken=res.accessToken;
//转换为身份验证凭据
最终认证证书=
FacebookAuthProvider.credential(fbToken.token);
//使用Firebase登录的用户凭据
最终结果=等待authService.signInWithCredentail(凭证);
打印(“${result.user.displayName}现在已登录”);
打破
案例FacebookLoginStatus.取消:
打印(“用户已取消登录”);
打破
案例FacebookLoginStatus。错误:
打印(“出现错误”);
打破
}
}
注销(){
authService.logout();
}
}
我的身份验证服务
class AuthService {
final _auth = FirebaseAuth.instance;
Stream<User> get currentUser => _auth.authStateChanges();
Future<UserCredential> signInWithCredentail(AuthCredential credential) =>
_auth.signInWithCredential(credential);
Future<void> logout() => _auth.signOut();
}
类身份验证服务{
final _auth=FirebaseAuth.instance;
Stream get currentUser=>\u auth.authStateChanges();
未来登录(认证凭证凭证)=>
_使用凭证(凭证)进行身份验证登录;
未来注销()=>_auth.signOut();
}
我也有同样的问题。看来FB改变了获取个人资料图片的方式
资料来源:
“处于开发模式且在ASID上发出无令牌请求的应用程序将收到一个轮廓图像作为响应。”
登录Facebook后使用令牌可用于从graph API检索图像。问题是我需要下载图像并显示在profile小部件中。我也遇到了同样的问题。看来FB改变了获取个人资料图片的方式 资料来源: “处于开发模式且在ASID上发出无令牌请求的应用程序将收到一个轮廓图像作为响应。” 登录Facebook后使用令牌可用于从graph API检索图像。问题是我需要下载图像并显示在profile小部件中