signInWithApple method

  1. @override
Future<Response<Credential>> signInWithApple()
override

Implementation

@override
Future<Response<Credential>> signInWithApple() async {
  final response = Response<Credential>();
  try {
    final result = await appleAuth.getAppleIDCredential();

    if (result.identityToken != null) {
      final credential = OAuthProvider("apple.com").credential(
        idToken: result.identityToken,
        accessToken: result.authorizationCode,
      );

      return response.withData(Credential(
        credential: credential,
        accessToken: result.authorizationCode,
        idToken: result.identityToken,
        id: result.userIdentifier,
        email: result.email,
        name: result.givenName ?? result.familyName,
      ));
    } else {
      return response.withException('Token not valid!', status: Status.error);
    }
  } catch (_) {
    return response.withException(_.toString(), status: Status.failure);
  }
}