appleLogin function
Implementation
Future<String?> appleLogin() async {
AuthorizationCredentialAppleID? credential;
localSettings.saveLogin("", "", "");
credential = await SignInWithApple.getAppleIDCredential(
scopes: [
AppleIDAuthorizationScopes.email,
AppleIDAuthorizationScopes.fullName,
],
);
if (credential.email != null)
dprint(credential.email!);
try {
userAccountData.userSocialLogin = "apple";
final rawNonce = generateNonce();
// final nonce = sha256ofString(rawNonce);
final oauthCredential = OAuthProvider("apple.com").credential(
idToken: credential.identityToken,
rawNonce: rawNonce,
);
var t = await FirebaseAuth.instance.signInWithCredential(oauthCredential);
final User? user = t.user;
if (user == null)
return "user == null";
var querySnapshot = await FirebaseFirestore.instance.collection("listusers").doc(user.uid).get();
var data = querySnapshot.data();
if (data != null && data.isNotEmpty)
return null;
FirebaseFirestore.instance.collection("listusers").doc(user.uid).set({
"visible": true,
"phoneVerified": false,
"email": user.email,
"phone": "",
"name": user.displayName ?? "",
"date_create" : FieldValue.serverTimestamp(),
"socialLogin" : "apple"
});
} catch (e) {
print(e);
return "appleLogin " + e.toString();
}
return null;
}