loginWithApple method
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');
}
}