Я пытаюсь добавить Apple Sign In в свое приложение Flutter для iOS с помощью пакета apple_sign_in.
Код в основном рабочий. Моя проблема в том, что вызов _firebaseAuth.signInWithCredential(credential)
создает учетную запись firebase с нулевым идентификатором (см. Снимок экрана ниже).
Одна странность в этом заключается в том, что, когда пользователь выбирает вариант поделиться своим адресом электронной почты при регистрации, result.credential.email
содержит адрес электронной почты пользователя после вызова AppleSignIn.performRequests()
. Поэтому я действительно озадачен, почему электронная почта пользователя не используется в качестве идентификатора при создании учетной записи в Firebase.
Future<FirebaseUser> signInWithApple() async {
final AuthorizationResult result = await AppleSignIn.performRequests([
AppleIdRequest(requestedScopes: [Scope.email, Scope.fullName])
]);
switch (result.status) {
case AuthorizationStatus.authorized:
final AppleIdCredential appleIdCredential = result.credential;
OAuthProvider oAuthProvider =
new OAuthProvider(providerId: "apple.com");
final AuthCredential credential = oAuthProvider.getCredential(
idToken: String.fromCharCodes(appleIdCredential.identityToken),
accessToken: String.fromCharCodes(
appleIdCredential.authorizationCode),
);
await _firebaseAuth.signInWithCredential(credential);
return _firebaseAuth.currentUser();
break;
case AuthorizationStatus.error:
print('Sign in failed: ${result.error.localizedDescription}');
break;
case AuthorizationStatus.cancelled:
print('User cancelled');
break;
}
return null;
}