getAuthorizationUrlWithPkce method

Uri getAuthorizationUrlWithPkce({
  1. required List<String> scopes,
  2. String? state,
  3. String? codeVerifier,
  4. String? redirectUri,
})

Generate Authorization URL with PKCE parameters

Implementation

Uri getAuthorizationUrlWithPkce({
  required List<String> scopes,
  String? state,
  String? codeVerifier,
  String? redirectUri,
}) {
  final queryParams = <String, String>{
    'response_type': 'code',
    'client_id': config.clientId,
    'scope': scopes.join(' '),
    'state': state ?? _generateState(),
  };

  if (redirectUri != null) {
    queryParams['redirect_uri'] = redirectUri;
  }

  // Add PKCE parameters
  if (codeVerifier != null) {
    final codeChallenge = generateCodeChallenge(codeVerifier);
    queryParams['code_challenge'] = codeChallenge;
    queryParams['code_challenge_method'] = codeChallengeMethod;
  }

  final uri = Uri.parse(config.authorizationEndpoint);
  return uri.replace(queryParameters: queryParams);
}