Dostlar, kafayı yemek üzereyim. Yeni bir ödeme servisi (AcmePay) entegre ediyorum. Dokümanları okudum, Postman koleksiyonunu indirdim, her şey tamam. İlk isteği atıyorum, 401 Unauthorized alıyorum. "Tamam" dedim, API Key'i yanlış yazmışımdır. Kontrol ettim, doğru. Bearer Token mı lazım? Onu da oluşturdum, yine aynı.
İki saattir aynı hatayı alıyorum. Dokümanı baştan sona tekrar okudum, "Authorization" header'ı doğru gözüküyor. Acaba saati mi yanlış? Timestamp ekledim. Olmadı. Body'yi JSON.stringify mi yapmalıyım? Onu da denedim. Hatta servisin sağladığı örnek kodu satır satır kendi kodumla karşılaştırdım. Aynı!
JavaScript:
const response = await fetch(apiUrl, {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
});
StackOverflow'da, hatta servisin eski GitHub issue'larında bile benzer bir problem bulamadım. "Acaba benim IP'm mi whitelist'te değil?" diye destek bile yazdım. Cevap gelene kadar debug'a devam.
Destekten "Her şeyiniz doğru gözüküyor" cevabı geldi. Kafamdaki tüm saçlar yolunmak üzereydi. Son çare olarak, tarayıcımın geliştirici araçlarından, servisin kendi demo sayfasında yaptığı istekleri incelemeye başladım. Network sekmesini açtım ve bir isteği detaylıca inceledim.
İşte orada! Benim gönderdiğim header'lara ek olarak, gizli bir header daha vardı:
`X-Client-Secret: demo_env_xyz123`
Dokümanda, örnek kodda, hiçbir yerde BAHİSİ bile geçmeyen bir header! Meğerse sadece test ortamında (`sandbox`) bu header zorunluymuş. Canlı ortamda (`production`) gerekmiyormuş. Bu bilgi sadece iç wiki'lerindeymiş ve dış dokümana eklemeyi unutmuşlar.
Hemen header'ı ekledim ve işte o mükemmel 200 OK! İki günlük zaman, sayısız kahve ve sinir stres, bir satırlık gizli header için heba oldu.
JavaScript:
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
'X-Client-Secret': process.env.CLIENT_SECRET // 🎯 İŞTE BU!
}
Moralim: Artık bir API'ye entegre olurken, sadece dokümana değil, eğer varsa onların kendi arayüzlerinin network trafiğine de bakacağım. Belki de en güvenilir doküman orası.
Siz de hiç dokümanda yazmayan, sadece network trafiğini inceleyerek bulduğunuz bir sırra denk geldiniz mi? Yoksa ben mi çok şanssızım?