authWithOAuth2Code method

Future<RecordAuth> authWithOAuth2Code(
  1. String provider,
  2. String code,
  3. String codeVerifier,
  4. String redirectURL, {
  5. Map<String, dynamic> createData = const {},
  6. Map<String, dynamic> body = const {},
  7. Map<String, dynamic> query = const {},
  8. Map<String, String> headers = const {},
  9. String? expand,
  10. String? fields,
})

Authenticate an auth record with an OAuth2 client provider and returns a new auth token and record data (including the OAuth2 user profile).

On success this method automatically updates the client's AuthStore.

Implementation

Future<RecordAuth> authWithOAuth2Code(
  String provider,
  String code,
  String codeVerifier,
  String redirectURL, {
  Map<String, dynamic> createData = const {},
  Map<String, dynamic> body = const {},
  Map<String, dynamic> query = const {},
  Map<String, String> headers = const {},
  String? expand,
  String? fields,
}) {
  final enrichedBody = Map<String, dynamic>.of(body);
  enrichedBody["provider"] ??= provider;
  enrichedBody["code"] ??= code;
  enrichedBody["codeVerifier"] ??= codeVerifier;
  enrichedBody["redirectURL"] ??= redirectURL;
  enrichedBody["createData"] ??= createData;

  final enrichedQuery = Map<String, dynamic>.of(query);
  enrichedQuery["expand"] ??= expand;
  enrichedQuery["fields"] ??= fields;

  return client
      .send<Map<String, dynamic>>(
        "$baseCollectionPath/auth-with-oauth2",
        method: "POST",
        body: enrichedBody,
        query: enrichedQuery,
        headers: headers,
      )
      .then(_authResponse);
}