createAuthorizationRequest method
McpAuthorizationRequest
createAuthorizationRequest({
- required McpAuthorizationServerMetadata authorizationServer,
- required Uri resource,
- required Uri redirectUri,
- Iterable<
String> ? scopes, - McpPkcePair? pkce,
Implementation
McpAuthorizationRequest createAuthorizationRequest({
required McpAuthorizationServerMetadata authorizationServer,
required Uri resource,
required Uri redirectUri,
Iterable<String>? scopes,
McpPkcePair? pkce,
}) {
if (authorizationServer.clientIdMetadataDocumentSupported != true) {
throw const McpOAuthClientMetadataException(
'Authorization server does not advertise Client ID Metadata '
'Document support.',
);
}
if (authorizationServer.tokenEndpointAuthMethodsSupported?.contains(
_noClientAuthentication,
) !=
true) {
throw const McpOAuthClientMetadataException(
'Authorization server does not advertise public-client token '
'endpoint authentication.',
);
}
final redirectValue = redirectUri.toString();
if (!redirectUris.any((uri) => uri.toString() == redirectValue)) {
throw const McpOAuthClientMetadataException(
'Redirect URI is not registered in the Client ID Metadata Document.',
);
}
return createMcpAuthorizationRequest(
authorizationServer: authorizationServer,
resource: resource,
clientId: clientId.toString(),
redirectUri: redirectUri,
scopes: scopes ?? this.scopes,
pkce: pkce,
);
}