/oauth/authorize, /oauth/token) OAuth protokol hatalarını verir. API (/api/v1/...) ise kendi hata zarfıyla 401, 403 ve klinik başlığıyla ilgili hataları verir. Yanıtın biçimine bakarak hangi katmanda takıldığınızı hemen anlarsınız.
API genel hata zarfı ve tüm hata kodları için Hata kodları sayfasına bakın.
OAuth hata yanıtları
Kimlik sunucusu hatayı iki yoldan bildirir:- JSON yanıt:
error,error_descriptionve çoğu zamanhintalanları ve bir HTTP durum kodu. Yanıttamessagealanı yoktur. - Yönlendirme: Geçerli bir
redirect_uribiliniyorsa sunucu302ile bu adrese döner. Aynı alanlar (vestate) sorgu dizesinde gelir. Yetkilendirme adımındaki hatalar genellikle bu yoldan gelir.
hint alanı sorunun tam yerini söyler. Örneğin Check the `client_secret` parameter. Hata ayıklarken önce hint değerini okuyun.
Token uç noktası dakikada, IP başına 60 istekle sınırlıdır. Aşarsanız
429 alırsınız. Sınırlar için Oran sınırları sayfasına bakın.
unsupported_grant_type yanıtı, uygulamanızın authorization_code ve refresh_token dışında bir akış denediğini gösterir. Desteklenen akış için Yetkilendirme kodu ve PKCE sayfasına bakın.invalid_scope
Sunucu istenen scope’u şu durumlarda reddeder:
- Scope katalogda yok veya pasif.
- Scope, uygulamanız için izin verilenler arasında değil.
- Yenileme (
refresh_token) isteğinde, ilk yetkilendirmede verilenden fazla scope istediniz.
error=invalid_scope olarak redirect_uri adresine döner ve hint alanında sorunlu scope’u (Check the `customers:write` scope) bildirir.
Sorun nasıl çözülür:
1
hint alanını okuyun
Reddedilen scope’un adı
hint içinde yazar.2
Scope'un adını doğrulayın
Geçerli scope adlarını Scope’lar sayfasından kontrol edin.
3
Uygulamanızın scope listesini kontrol edin
Scope uygulamanıza tanımlı değilse uygulamanın scope listesini güncelleyin. Bkz. Uygulama oluşturma.
4
Yenileme isteğinde scope'u daraltın
refresh_token isteğine scope eklerseniz yalnızca ilk yetkilendirmedeki scope’ların alt kümesini isteyin. Yeni bir scope için kullanıcının yeniden yetkilendirmesi gerekir.422 OAUTH_SCOPE_INVALID döndürür. data.invalid_scopes alanı reddedilen scope’ları listeler.
invalid_client ve invalid_grant
Bu iki hata sık karıştırılır. invalid_client istemci kimliğiyle ilgilidir. invalid_grant ise elinizdeki kod veya token ile ilgilidir.
invalid_client (401)
Açıklama her zaman Client authentication failed metnidir. Olası nedenler:
client_idbilinmiyor.- Uygulamanın erişimi kaldırılmış (revoke edilmiş).
client_secretyanlış. Secret yalnızca oluşturulurken bir kez gösterilir. Kaybettiyseniz yenisini üretin.- Yetkilendirme isteğindeki
redirect_urikayıtlı adreslerle birebir aynı değil. Bu durumda sunucu yönlendirme yapmaz, JSON döner. - Uygulamada birden fazla
redirect_urikayıtlı olduğu halde isteğeredirect_urieklemediniz.
WWW-Authenticate: Basic realm="OAuth" başlığı gelir.
invalid_grant (400)
Hata hint değerine göre iki gruba ayrılır:
401 ve 403 farkı
Token’ınızla API’ye geldiğinizde karşılaşacağınız iki durum şunlardır.
401
UNAUTHENTICATED yanıtı Kimlik doğrulaması gerekli. mesajını taşır. Nedenleri:
Authorizationbaşlığı yok veya token bozuk.- Access token’ın süresi doldu. Access token 5 dakika geçerlidir.
- Token iptal edildi veya uygulamanın erişimi kaldırıldı.
- Kullanıcı silinmiş.
- Token
client_credentialsile alındı. Bu token’lar/api/v1için kullanılamaz.
FORBIDDEN iki farklı mesajla gelir. error_code aynı olduğu için ayırt edici olan message metnidir.
Bir isteğin etkin yetkisi üç şeyin kesişimidir: token’daki scope, kullanıcının o klinikteki izinleri ve kullanıcının klinik üyeliği. Scope tek başına yetmez.
Bazı 403 yanıtları
FORBIDDEN yerine kendi kodunu taşır. Örnek: kullanıcıya atanmamış bir lead için LEAD_NOT_ASSIGNED, atanmamış bir sohbet için CONVERSATION_NOT_ASSIGNED. Bunlar scope veya rol sorunu değildir, kayıt görünürlüğü kuralıdır. Bkz. İzinler ve görünürlük.Kontrol sırası
Klinik gerektiren bir uç noktada API denetimleri sırayla yapar. İlk başarısız denetimin hatası döner:401token429oran sınırı400veya404X-Tenantbaşlığı402abonelik ve ödeme kilidi428kurulum kilidi403scope (Invalid scope(s) provided.)403izin (Bu işlem için yetkiniz yok.)404veya422kaynak
403 scope hatası alıyorsanız X-Tenant ve klinik kilitleri sorun değildir.
Klinik başlığı hataları
Klinik gerektiren her uç noktadaX-Tenant: <tenant_id> başlığı zorunludur. Değer kliniğin sayısal id değeridir, slug değildir. Bu denetim token (401) ve oran sınırı (429) denetiminden sonra yapılır.
Üye olmadığınız bir klinik için
403 değil 404 TENANT_NOT_FOUND alırsınız. API, başka kliniklerin var olup olmadığını açığa çıkarmaz. Yanlış X-Tenant değeri gönderdiğinizden şüpheleniyorsanız önce GET /api/v1/account/tenants ile kullanıcının kliniklerini listeleyin./oauth/* uç noktaları (/api/v1/oauth/clients ve /api/v1/oauth/scopes) da X-Tenant ister. Başlık olmadan 400 TENANT_HEADER_REQUIRED alırsınız. İzin, yalnızca başlıkta gönderdiğiniz klinikte kontrol edilir.
Klinik seçimini ve X-Tenant kurallarını Klinikler ve X-Tenant sayfasında bulabilirsiniz.
Abonelik ve kurulum kilitleri
Klinik başlığı doğru olsa bile kliniğin durumu isteği durdurabilir.ACCESS_RESTRICTED_BY_OVERDUE_PAYMENT yanıtında data.proforma_invoice_id ve data.due_date bulunur. SETUP_REQUIRED yanıtında data.next_step bulunur. Bu kilitlerin ayrıntısı ve çözümü için Erişim kilitleri sayfasına bakın.
İlgili sayfalar
Tokenlar
Access ve refresh token ömürleri, yenileme.
Scope'lar
Scope listesi ve uç nokta eşleşmeleri.
Klinikler ve X-Tenant
Klinik seçimi ve başlık kuralları.
Hata kodları
API’nin tüm hata kodları.