颤动脸书登录允许切换帐户



该应用程序允许用户使用Facebook登录,但是当用户想要使用其他Facebook帐户登录时,我遇到了问题,此页面只会显示继续按钮。用户是否可以选择使用其他帐户进行登录? 另外,在FacebookLoginStatus.error的情况下,我似乎没有任何错误,应该对它进行哪些错误处理? 我是颤振和编码的新手,指出是否有任何事情应该以不同的方式完成或可以改进,这将是有帮助的。

onPressed: () async {
final facebookLogin = FacebookLogin();
final result = await facebookLogin.logIn(['email']);
switch (result.status) {
case FacebookLoginStatus.loggedIn:
try{
final token = result.accessToken.token;
AuthCredential credential =
FacebookAuthProvider.getCredential(accessToken: token);
FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
if(user != null){
Navigator.pushReplacementNamed(context, Home.id);
}
} catch(e){
print(e);
}
break;
case FacebookLoginStatus.cancelledByUser:
print('cancelled');
break;
case FacebookLoginStatus.error:
print('error');
break;
}
},
在使用者

想要使用其他Facebook帐户登录时遇到问题,此页面将仅显示"继续"按钮

我使用FacebookLogin.logOut()断开用户连接,以便用户可以使用其他帐户登录。

onPressed: () async {
final facebookLogin = FacebookLogin();
await facebookLogin.logOut(); // disconnect user
final FacebookLoginResult result =
await facebookLogin.logIn(['email', 'public_profile']);
switch (result.status) {
case FacebookLoginStatus.loggedIn:
try{
final token = result.accessToken.token;
AuthCredential credential =
FacebookAuthProvider.getCredential(accessToken: token);
FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
if(user != null){
Navigator.pushReplacementNamed(context, Home.id);
}
} catch(e){
print(e);
}
break;
case FacebookLoginStatus.cancelledByUser:
alertMessage(context, 'cancelled'); // show dialog
break;
case FacebookLoginStatus.error:
alertMessage(context, 'error'); // show dialog
break;
}
},

应该对它进行哪些错误处理?

您可以提示用户登录状态消息:

void alertMessage(context, String message) {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: const Text("Error"),
content: Text(message),
actions: [
FlatButton(
child: Text(S.of(context).ok),
onPressed: () {
Navigator.of(context).pop();
},
)
],
)
);
}

添加到代码的第一个以登录Facebook

await FacebookAuth.instance.logOut();

最新更新