curl --request GET 'https://api.voicecheap.ai/.well-known/oauth-authorization-server'
const input = {};
const response = await fetch('https://api.voicecheap.ai/.well-known/oauth-authorization-server', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/.well-known/oauth-authorization-server",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
OAuth i protokół MCP
Pobierz metadane serwera autoryzacji
Poznaj publiczne punkty końcowe OAuth oraz obsługiwane w tym środowisku mechanizmy kodów autoryzacyjnych, PKCE, odświeżania i unieważniania.
GET
/
.well-known
/
oauth-authorization-server
curl --request GET 'https://api.voicecheap.ai/.well-known/oauth-authorization-server'
const input = {};
const response = await fetch('https://api.voicecheap.ai/.well-known/oauth-authorization-server', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/.well-known/oauth-authorization-server",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Poznaj publiczne punkty końcowe OAuth oraz obsługiwane w tym środowisku mechanizmy kodów autoryzacyjnych, PKCE, odświeżania i unieważniania.
GET https://api.voicecheap.ai/.well-known/oauth-authorization-server
Uwierzytelnianie
Brak.Przykłady żądań
Stosuj udokumentowany sposób kodowania i uwierzytelniania dla tej ścieżki. Struktura odpowiedzi i reguły idempotencji API akcji dotyczą wyłącznie wywołań akcji.curl --request GET 'https://api.voicecheap.ai/.well-known/oauth-authorization-server'
const input = {};
const response = await fetch('https://api.voicecheap.ai/.well-known/oauth-authorization-server', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/.well-known/oauth-authorization-server",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Odpowiedź
Metadane serwera autoryzacyjnego OAuth z bezwzględnymi adresami URL punktów końcowych w kanonicznym origin wystawcy.HTTP 200
{
"issuer": "https://api.voicecheap.ai",
"authorization_endpoint": "https://api.voicecheap.ai/oauth/authorize",
"token_endpoint": "https://api.voicecheap.ai/oauth/token",
"registration_endpoint": "https://api.voicecheap.ai/oauth/register",
"revocation_endpoint": "https://api.voicecheap.ai/oauth/revoke",
"response_types_supported": ["code"],
"response_modes_supported": ["query"],
"grant_types_supported": ["authorization_code", "refresh_token"],
"token_endpoint_auth_methods_supported": ["none"],
"revocation_endpoint_auth_methods_supported": ["none"],
"code_challenge_methods_supported": ["S256"],
"scopes_supported": [
"account:read",
"usage:read",
"settings:read",
"settings:write",
"team:read",
"team:write",
"projects:read",
"projects:write",
"projects:delete",
"translations:write",
"transcription:read",
"transcription:write",
"subtitles:read",
"subtitles:write",
"tts:read",
"tts:write",
"voices:read",
"voices:write",
"images:read",
"images:write",
"thumbnails:read",
"thumbnails:write",
"folders:read",
"folders:write",
"glossary:read",
"glossary:write",
"webhooks:read",
"webhooks:write",
"publishing:read",
"publishing:write",
"offline_access"
],
"authorization_response_iss_parameter_supported": true,
"client_id_metadata_document_supported": true
}
Uwagi do operacji
- Deklarowane są wyłącznie typ odpowiedzi code i tryb odpowiedzi query.
- Klienci mogą używać rejestracji dynamicznej lub Client ID Metadata Document (CIMD). client_id_metadata_document_supported ma wartość true; klient CIMD używa publicznego adresu HTTPS dokumentu jako client_id.
- Dokument JSON CIMD musi zawierać dokładnie zgodny client_id, niepusty client_name do 120 znaków oraz 1–10 dokładnych redirect_uris. Używaj uwierzytelniania klienta publicznego none z S256 PKCE; authorization_code jest wymagane, a refresh_token opcjonalne.
- Udostępniaj CIMD jako nieskompresowany JSON przez publiczne HTTPS na porcie 443, z jawną ścieżką, bez poświadczeń, fragmentów, segmentów kropkowych i przekierowań. Dokument może mieć do 64 KiB i musi odpowiedzieć w ciągu 5 sekund. Metadane w pamięci podręcznej wygasają najpóźniej po 5 minutach; wymiana i odświeżanie tokenów używają metadanych powiązanych z autoryzacją.
- Gdy OpenID Connect jest dostępny, metadane serwera autoryzacji ogłaszają też zakresy openid i email oraz userinfo_endpoint i jwks_uri. W przeciwnym razie te zakresy i endpointy nie występują w metadanych.
- Metody uwierzytelniania tokenów i unieważniania mają wartość none. Klienci publiczni używają client_id i S256 PKCE zamiast sekretu klienta.
- offline_access to znacznik zakresu związany z odnawianiem, a nie uprawnienie produktu. Wydanie tokenu odświeżania zależy od tego, czy refresh_token zarejestrowano jako typ grantu.
- Sprawdź zgodność zwróconej wartości iss z issuer w końcowym wywołaniu zwrotnym klienta. Zarówno udane, jak i odrzucone wywołania zwrotne autoryzacji zawierają iss i zwracają state, jeśli zostało podane.
Błędy
| Status HTTP | Kod | Znaczenie lub sposób rozwiązania |
|---|---|---|
| 429 | temporarily_unavailable | Osiągnięto publiczny limit częstotliwości żądań OAuth. Przed ponowieniem poczekaj na zakończenie bieżącego okna. |
| 500 | server_error | Autoryzacja jest tymczasowo niedostępna. Spróbuj ponownie później. |
Czy ta strona była pomocna?

