loginWithApple method

Future<void> loginWithApple()

Implementation

Future<void> loginWithApple() async {
  try {
    _requireFirebaseAuth();
    final appleProvider = AppleAuthProvider()
      ..addScope('email')
      ..addScope('name');
    final userCredentials = await _firebaseAuth!.signInWithProvider(
      appleProvider,
    );

    if (userCredentials.user != null) {
      final idToken = (await userCredentials.user!.getIdToken())!;
      requireSmartLinksNativeBridge();
      final data = await SmartLinksNativeApi.socialAuthApple(
        accessToken: idToken,
        project: CommunityConstants.firebaseProject.isNotEmpty
            ? CommunityConstants.firebaseProject
            : null,
      );
      if (data != null && data['token'] != null) {
        await CommunityStorage.saveAuthToken(data['token'] as String);
        user.value = userCredentials.user;
        if (user.value != null) {
          isSignedIn.value = true;
          _onLogin();
        }
      }
    }
  } catch (e) {
    Get.snackbar('Error', 'Apple sign-in failed. ${e.toString()}');
    debugPrint('Apple Login Failed:  $e');
  }
}