通过最新更新,Firebase 允许您使用
AppleAuthProvider
登录,而无需使用 sign_in_with_apple
软件包。这确实很有用,但是我如何才能获得用户的全名和电子邮件?
我知道我可以使用函数
.addScope()
添加范围,但是如何检索它们?
现在举个例子,我们可以通过以下过程检索这些数据:
final AuthorizationCredentialAppleID credential =
await SignInWithApple.getAppleIDCredential(
scopes: <AppleIDAuthorizationScopes>[
AppleIDAuthorizationScopes.email,
AppleIDAuthorizationScopes.fullName,
],
nonce: nonce,
);
final String name = credential.givenName + credential.familyName;
final String email = credential.email;
但现在我想要这样的东西
final AppleAuthProvider appleAuth = AppleAuthProvider();
appleAuth.addScope('email');
appleAuth.addScope('name');
final UserCredential authResult = await FirebaseAuth.instance
.signInWithAuthProvider(appleAuth);
final String name = ... //What should I put here?
看起来是个bug 已报告 Github 问题
希望他们尽快修复
编辑************
我发现这种情况可能会发生,因为你第一次使用此方法时,没有使用作用域。
解决方案是转到设置> iCloud>密码和安全>使用Apple ID的应用程序。 并删除你的应用程序,因为苹果只有在你第一次使用该方法时,才会带来你请求的信息
final appleProvider = AppleAuthProvider()
..addScope('email')
..addScope('name');
UserCredential userCredential =
await FirebaseAuth.instance.signInWithProvider(appleProvider);
userCredential.user?.displayName
userCredential.user?.email