Ana içeriğe geç

POST /backend/oauth2/token — OAuth2 Code Verify

📋 Genel Bilgi

OAuth2 authorization_code grant akışı ile uzaktan doğrulama yapılır. Client credentials (client_id, client_secret) ile authorization code exchange edilir.

Base URL: {{wentro}}/backend/oauth2/token Method: POST Content-Type: application/json


🔐 Headers

HeaderValue
Content-Typeapplication/json

📥 Request Body

{
"grant_type": "authorization_code",
"code": "{{auth_code}}",
"client_id": "{{client_id}}",
"client_secret": "{{client_secret}}",
"redirect_uri": "https://example.com/callback"
}

Parametreler

AlanTipZorunluAçıklamaÖrnek
grant_typestringGrant türü (sabit: authorization_code)"authorization_code"
codestringAuthorization code (OAuth2 flow'dan gelen)"{{auth_code}}"
client_idstringOAuth client ID"{{client_id}}"
client_secretstringOAuth client secret-
redirect_uristringYönlendirme URI'si (OAuth client'ta kayıtlı olmalı)"https://example.com/callback"

🔄 Akış Diyagramı (OAuth2 Authorization Code Flow — Uzaktan Doğrulama)

Adım Açıklamaları:

AdımTarafİşlemAçıklama
1Servis Sağlayıcı → MüşteriOAuth authorize endpoint'ine redirect ederServis sağlayıcı, müşteriyi API'nin OAuth authorize sayfasına yönlendirir. client_id, redirect_uri ve diğer parametreler gönderilir.
2Müşteri → Passkey EkranıDoğrulama ekranı açılırMüşteri passkey ile doğrulama yapar (biyometrik, PIN vb.).
3Müşteri → Passkey EkranıOnay verirMüşteri onayladığında doğrulama tamamlanır.
4Müşteri → APIAuthorization code ile redirect edilirDoğrulama başarılı olduğunda, müşteri redirect_uri'ye bir authorization code (code) parametresiyle yönlendirilir.
5API → Servis SağlayıcıAuthorization code dönerRedirect URI'de ?code=AUTH_CODE formatında authorization code bulunur.
6Servis Sağlayıcı → APIPOST /backend/oauth2/token ile code exchange edilirServis sağlayıcı, authorization code'u ve client credentials (client_id, client_secret) ile token endpoint'ine istek gönderir.
7API → Servis SağlayıcıDoğrulama sonucu dönermsisdn, verified, context (cihaz/IP bilgisi) gibi bilgiler döner.
8Servis Sağlayıcı → MüşteriCallback'e redirect ederİşlem tamamlandıktan sonra müşteri callback sayfasına yönlendirilir.
9Callback → MüşteriSayfa gösterilirSon kullanıcı callback/teşekkür sayfasını görür.

Kullanım Senaryoları:

SenaryoAçıklama
OAuth2 Entegrasyon (Standart Flow)Servis sağlayıcı, OAuth2 authorization_code flow'u ile müşteriyi doğrular. client_id ve client_secret ile güvenli token exchange yapılır.
Üçüncü Taraf DoğrulamaBaşka bir servis/mobil uygulama üzerinden müşteri doğrulaması gerektiğinde kullanılır.
KVKK / EK Onayı (OAuth2)Müşterinin KVKK veya Ek Onay (SMS, call, email) onayları OAuth2 flow ile alınır.

✅ Response — 200 OK

{
"success": true,
"context": {
"requestId": "11c096cc-938c-4c8a-8363-c9055b4a4851",
"timestamp": "2026-07-13T12:41:59.848Z",
"ip": "127.0.0.1",
"deviceContext": {
"deviceName": "Desktop Computer",
"deviceVendor": "",
"deviceModel": "",
"deviceType": "desktop",
"osName": "Windows",
"osVersion": "10",
"browserName": "Chrome",
"browserVersion": "150.0.0.0",
"cpuArchitecture": "amd64"
},
"ipContext": {
"country": null,
"countryCode": null,
"city": null,
"region": null,
"regionCode": null,
"latitude": null,
"longitude": null,
"timezone": null,
"postalCode": null,
"accuracyRadius": null
}
},
"parsedAt": "2026-07-13T12:41:59.849Z",
"msisdn": "{{customer_msisdn}}",
"verified": true,
"verifiedAt": "2026-07-13 15:42:11"
}

Response Alanları

AlanTipAçıklama
successbooleanDoğrulama sonucu
context.requestIdstringİstek benzersiz ID (UUID)
context.timestampstringİşlem zamanı (ISO 8601)
context.ipstringİstemci IP adresi
context.deviceContextobjectCihaz detayları
context.ipContextobjectCoğrafi konum bilgisi (null: localhost)
parsedAtstringİşlem zamanı (ISO 8601)
msisdnstringMüşteri telefon numarası
verifiedbooleanDoğrulama durumu
verifiedAtstringDoğrulama zamanı (YYYY-MM-DD HH:mm:ss)

❌ Error Responses

⚠️ Önemli: Bu endpoint, projenin geri kalanındaki AppError/Response+Success:false formatını kullanmıyor. Bunun yerine OAuth2 spesifikasyonuna uygun standart error/error_description formatını kullanıyor:

{
"error": "invalid_grant",
"error_description": "Geçersiz yetkilendirme kodu"
}
errorerror_descriptionNe Zaman Oluşur
invalid_requestGerekli parametreler eksik: grant_type, code, client_id, client_secretgrant_type, code, client_id veya client_secret alanlarından biri boş
unsupported_grant_typeDesteklenmeyen grant_type. Sadece 'authorization_code' destekleniyor.grant_type değeri authorization_code dışında bir şey
invalid_clientClient bulunamadıGönderilen client_id'ye karşılık gelen bir OAuth client kaydı yok
invalid_grantRedirect URI uyuşmuyorGönderilen redirect_uri, client'ta kayıtlı redirect_uri ile eşleşmiyor
invalid_clientGeçersiz client_secretclient_secret yanlış
invalid_grantGeçersiz yetkilendirme koducode'a karşılık gelen bir oauth2_logs kaydı bulunamadı
invalid_grantYetkilendirme kodu zaten kullanılmışcode daha önce verified durumuna geçmiş (tek kullanımlık)
invalid_grantYetkilendirme kodu süresi dolmuş (10 dakika geçerli)code'un expiredAt zamanı geçmiş
invalid_grantYetkilendirme kodu bu client için geçerli değilcode, farklı bir client_id için üretilmiş

📝 Notlar

  • Fark: Bu endpoint, Dynamic QR ve Landing Page Auth'dan farklı olarak standart OAuth2 authorization_code flow kullanır. Servis sağlayıcı müşteriyi önce authorize sayfasına redirect eder → müşteri passkey ile doğrular → API'ye code parametresiyle redirect edilir → servis sağlayıcı bu code'u token exchange için kullanır.
  • client_secret gizli tutulmalıdır (backend tarafında saklanır, asla client-side'a gönderilmez).
  • redirect_uri, OAuth client'ta önceden kayıtlı olmalıdır. Redirect URI eşleşmezse hata döner.
  • verifiedAt formatı: YYYY-MM-DD HH:mm:ss.
  • Bu endpoint servis sağlayıcı (backend) tarafından çağrılır, müşteri tarafı değil.