createAuthorizationRequest method

McpAuthorizationRequest createAuthorizationRequest({
  1. required Uri resource,
  2. required Uri redirectUri,
  3. Iterable<String>? scopes,
  4. McpPkcePair? pkce,
})

Implementation

McpAuthorizationRequest createAuthorizationRequest({
  required Uri resource,
  required Uri redirectUri,
  Iterable<String>? scopes,
  McpPkcePair? pkce,
}) {
  final redirectValue = redirectUri.toString();
  if (!redirectUris.any((uri) => uri.toString() == redirectValue)) {
    throw const McpOAuthClientRegistrationException(
      'Redirect URI is not present in the dynamic client registration.',
    );
  }
  final selectedScopes = _validatedScopes(scopes ?? this.scopes);
  if (this.scopes.isNotEmpty &&
      selectedScopes.any((scope) => !this.scopes.contains(scope))) {
    throw const McpOAuthClientRegistrationException(
      'Authorization scopes must not exceed the dynamic client '
      'registration.',
    );
  }
  return createMcpAuthorizationRequest(
    authorizationServer: authorizationServer,
    resource: resource,
    clientId: clientId,
    redirectUri: redirectUri,
    scopes: selectedScopes,
    pkce: pkce,
  );
}