initOAuth method

void initOAuth({
  1. required OAuthConfiguration configuration,
})

Implementation

void initOAuth({
  required OAuthConfiguration configuration,
}) {
  final redirectUrl =
      originUrl() != null ? originUrl()! : configuration.redirectUrl;
  baseUrl = configuration.baseUrl;
  onSuccessAuth = configuration.onSuccessAuth;
  super.init(
    redirectUrls: baseUrl != null ? [redirectUrl, baseUrl!] : [redirectUrl],
    onError: configuration.onError,
    onCancel: configuration.onCancel,
  );

  if (kIsWeb) {
    codeVerifier = OAuthWebAuth.instance.restoreCodeVerifier() ??
        OAuthWebAuth.instance.generateCodeVerifier();
  }

  authorizationCodeGrant = oauth2.AuthorizationCodeGrant(
    configuration.clientId,
    Uri.parse(configuration.authorizationEndpointUrl),
    Uri.parse(configuration.tokenEndpointUrl),
    secret: configuration.clientSecret,
    codeVerifier: codeVerifier,
    delimiter: configuration.delimiter,
    basicAuth: configuration.basicAuth ?? true,
    httpClient: configuration.httpClient,
  );
  initialUri = authorizationCodeGrant.getAuthorizationUrl(
    Uri.parse(redirectUrl),
    scopes: configuration.scopes,
  );
  initialUri = initialUri.replace(
      queryParameters: Map.from(initialUri.queryParameters)
        ..addAll({
          'state': const Base64Encoder.urlSafe()
              .convert(DateTime.now().toIso8601String().codeUnits),
          'nonce': const Base64Encoder.urlSafe().convert(
              DateTime.now().millisecondsSinceEpoch.toString().codeUnits),
          if (configuration.loginHint != null)
            'login_hint': configuration.loginHint,
          if (configuration.promptValues?.isNotEmpty ?? false)
            'prompt': configuration.promptValues!.join(' '),
        }));
}