在flutter中使用苹果登录时遇到问题

问题描述 投票:0回答:1

我已经使用此功能使用苹果登录来注册用户,但无论是在初始注册还是再次登录时,它都没有从苹果登录中获取用户名。任何帮助将不胜感激。我正在尝试获取用户名,但无法为此目的找到适当的解决方案。有人可以告诉我当用户最初注册时如何获取用户名或检查上述代码是否有任何问题。预先感谢。

sign_in_with_apple: ^5.0.0
firebase_auth: ^4.12.1

Future signInWithApple() async {
_hasError = false;
notifyListeners();
bool canAppleSignIn = await SignInWithApple.isAvailable();

if (canAppleSignIn == true) {
  // executing our authentication
  try {
    final credential = await SignInWithApple.getAppleIDCredential(
      scopes: [
        AppleIDAuthorizationScopes.email,
        AppleIDAuthorizationScopes.fullName,
      ],
    );

    final oauthCredential = OAuthProvider("apple.com").credential(
      idToken: credential.identityToken,
    );
    final UserCredential userCredential = await FirebaseAuth.instance.signInWithCredential(oauthCredential);

    if (userCredential.user?.displayName == null ||
        (userCredential.user?.displayName != null && userCredential.user!.displayName!.isEmpty)) {
      final fixDisplayNameFromApple = [
        credential.givenName ?? '',
        credential.familyName ?? '',
      ].join(' ').trim();
      await userCredential.user?.updateDisplayName(fixDisplayNameFromApple);
    }
    if (userCredential.user?.email == null ||
        (userCredential.user?.email != null && userCredential.user!.email!.isEmpty)) {
      await userCredential.user?.updateEmail(credential.email ?? '');
    }

    user = FireStoreUser(
        email: userCredential.user?.email,
        imageUrl: userCredential.user?.photoURL ?? "https://winaero.com/blog/wp-content/uploads/2017/12/User-icon-256-blue.png",
        name: userCredential.user?.displayName,
        provider: "APPLE",
        uid: userCredential.user!.uid,
      );

    await saveDataToSharedPreferences();

    notifyListeners();
  } on FirebaseAuthException catch (e) {
    switch (e.code) {
      case "account-exists-with-different-credential":
        _errorCode =
            "You already have an account with us. Use correct provider";
        _hasError = true;
        notifyListeners();
        break;

      case "null":
        _errorCode = "Some unexpected error while trying to sign in";
        _hasError = true;
        notifyListeners();
        break;
      default:
        _errorCode = e.toString();
        _hasError = true;
        notifyListeners();
    }
  }
} else {
  _hasError = true;
  notifyListeners();
}
}
flutter firebase-authentication flutter-dependencies apple-sign-in
1个回答
0
投票

你能试试这个吗?

打开 iPhone 中的设置

然后转到您的 Apple ID/您的个人资料

然后转到登录和安全

然后去苹果登录

然后选择您的应用程序并从该应用程序中删除您的苹果标志

然后尝试重新安装您的应用程序并尝试再次登录。

© www.soinside.com 2019 - 2024. All rights reserved.