class RubyLLM::MCP::Auth::TokenManager

def exchange_authorization_code(server_metadata, client_info, code, pkce, server_url)

Returns:
  • (Token) - access token

Parameters:
  • server_url (String) -- MCP server URL
  • pkce (PKCE) -- PKCE parameters
  • code (String) -- authorization code
  • client_info (ClientInfo) -- client info
  • server_metadata (ServerMetadata) -- server metadata
def exchange_authorization_code(server_metadata, client_info, code, pkce, server_url)
  logger.debug("Exchanging authorization code for access token")
  registered_redirect_uri = client_info.metadata.redirect_uris.first
  params = build_auth_code_params(client_info, code, pkce, registered_redirect_uri, server_url)
  response = post_token_exchange(server_metadata, params)
  response = retry_if_redirect_mismatch(response, server_metadata, params, registered_redirect_uri)
  validate_token_response!(response, "Token exchange")
  parse_token_response(response)
end