Flutter:如何从谷歌登录firebase获取生日? (安卓和iOS)
Posted
技术标签:
【中文标题】Flutter:如何从谷歌登录firebase获取生日? (安卓和iOS)【英文标题】:Flutter: How to get birthdate from google sign in firebase? (Android and iOS) 【发布时间】:2021-11-11 09:59:55 【问题描述】:我想从 google 登录 firebase 获取生日,但我看不到任何生日。我能得到的唯一信息是显示名称、电子邮件、号码等。你能帮我吗?谢谢!
这是我使用 google 登录后获取用户信息的代码。
final GoogleSignIn _googleSignIn = GoogleSignIn();
var googleIdToken;
FirebaseUser user;
Future<FirebaseUser> signInWithGoogle() async
final GoogleSignInAccount googleSignInAccount = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleSignInAuthentication = await googleSignInAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleSignInAuthentication.accessToken,
idToken: googleSignInAuthentication.idToken);
googleIdToken = googleSignInAuthentication.idToken;
final AuthResult authResult = await _auth.signInWithCredential(credential);
user = authResult.user;
AuthService().googleLogin(googleIdToken).then((val)
if (val.data['success'])
var token2 = val.data['token'];
AuthService().getInfo(token2).then((val) async
var store = val.data['user'];
await UserSimplePreferences.setEmail(store['email']);
await UserSimplePreferences.setFirstName(store['firstname']);
await UserSimplePreferences.setLastName(store['lastname']);
await UserSimplePreferences.setUsername(store['username']);
showDialog(context: context,
builder: (BuildContext context)
return _SuucessLogin();
);
EasyLoading.dismiss();
);
else
print('WRONG EMAIL/ PASS');
);
assert(!user.isAnonymous);
assert(await user.getIdToken() != null);
final FirebaseUser currentUser = await _auth.currentUser();
assert(currentUser.uid == user.uid);
return user;
【问题讨论】:
【参考方案1】:由于数据安全合规性,Google 不会直接在 API 响应中提供生日。它的作用是,当用户完成由您的 Firebase 应用程序发起的 google 登录时,它会通过弹出窗口提示用户让用户允许在生日时授予访问权限。
在您的 firebase google 身份验证配置中,您必须为生日定义如下范围。
signInOptions: [
provider: fb.auth.GoogleAuthProvider.PROVIDER_ID,
scopes: [
"https://www.googleapis.com/auth/user.birthday.read",
"https://www.googleapis.com/auth/userinfo.profile"
],
customParameters:
prompt: "select_account"
,
按照此处的帖子了解如何在 google 登录提供程序 https://firebase.google.com/docs/auth/web/google-signin 中添加范围
【讨论】:
我应该把那部分代码放在哪里?我遇到了一个错误。 您需要更改 GoogleSignIn() 实例或您在代码中配置身份验证提供程序的任何位置。阅读此链接了解详情pub.dev/documentation/firebase_auth_platform_interface/latest/…以上是关于Flutter:如何从谷歌登录firebase获取生日? (安卓和iOS)的主要内容,如果未能解决你的问题,请参考以下文章
如何在flutter中将标记从firebase(真实数据库)检索到新的google maps api