Twitter/X API ile çalışmaya başlayan çoğu geliştiricinin ilk karşılaştığı “gizemli hata” nedir biliyor musun? OAuth callback (geri dönüş) hatası. 🚧
Ben ilk kez bu hatayı aldığımda “Acaba şifre mi yanlış?” diye düşündüm. Saatlerce uğraştım, kodu tekrar tekrar yazdım… meğer sorun, Twitter Developer portalındaki callback URL ayarındaymış. 🙃
Bu yazıda, OAuth callback hatasının neden ortaya çıktığını, uygulama ayarlarında neleri kontrol etmen gerektiğini ve güvenlik incelemesi sırasında hangi püf noktaların işine yarayacağını anlatacağım.
OAuth Callback Nedir?
OAuth, Twitter API’sine güvenli erişim için kullanılan standart kimlik doğrulama protokolüdür. Twitter Developer belgelerinde açıklandığı gibi, süreç şöyle işler:
- Kullanıcı uygulamana giriş yapmak ister.
- Twitter, kullanıcıdan izin alır.
- Kullanıcı onay verdiğinde, Twitter seni callback URL’ine yönlendirir.
- Uygulaman bu URL üzerinden token alır ve işlem tamamlanır.
Ama callback URL yanlış yapılandırılırsa, OAuth süreci kırılır ve hata mesajı alırsın.
Callback Hatalarının Yaygın Sebepleri
401 Unauthorized veya “Callback URL not approved” gibi hatalar genellikle şu nedenlerden çıkar:
- Callback URL Developer Portal’da tanımlı değil.
- Yanlış URL kullanımı (http yerine https, ek slash hataları).
- Çoklu domain sorunları (ör. dev.site.com yerine www.site.com eklenmiş).
- Kod tarafında redirect_uri parametresi ile ayarların uyumsuzluğu.
- Uygulama erişim seviyesi sadece “App-only” ayarlıysa kullanıcı oturum açamaz.
Twitter’ın resmi hatalar rehberinde, callback hatalarının büyük çoğunluğunun URL uyumsuzluğundan kaynaklandığı belirtiliyor.
Tablo: OAuth Callback Hata Sebepleri ve Çözümleri
Sorun 🚨 | Çözüm ✅ |
---|---|
Callback URL eklenmemiş | Developer portal → App Settings → Callback URLs bölümüne ekle |
HTTP/HTTPS uyumsuzluğu | Mutlaka HTTPS kullan, HTTP kabul edilmiyor |
Slash (/) hatası | https://site.com/callback ile https://site.com/callback/ farklıdır |
Çoklu domain karmaşası | Gerekirse tüm alt domainleri ayrı ayrı ekle |
Redirect parametresi uyumsuzluğu | Kod tarafındaki redirect_uri Developer portal ile eşleşmeli |
Diyagram: OAuth Callback Akışı
[Uygulama Login]
↓
[Twitter İzin Ekranı]
↓
[Callback URL’e Yönlendirme]
↓
[Uygulama Token Alıyor]
↓
[Kullanıcı Giriş Başarılı 🎉]
Güvenlik İncelemesi: Dikkat Etmen Gerekenler
Twitter, OAuth sürecinde güvenliği çok ciddiye alıyor. Resmi güvenlik rehberinde özellikle şu noktalar vurgulanıyor:
- Yalnızca HTTPS kullan. Çünkü kullanıcı verisi (token) hassastır.
- Doğru domain doğrulaması yap. Saldırganların farklı URL’lere yönlendirme yapmasını engelle.
- State parametresi ekle. CSRF saldırılarına karşı önlem.
- En az yetki prensibi (least privilege). Kullanıcıdan sadece ihtiyaç duyduğun izinleri iste.
Ben ilk uygulamamda gereksiz yere “Direct Message read/write” izni istemiştim. Twitter bunu güvenlik incelemesinde sorguladı. Öğrendim ki, gerçekten ihtiyacın yoksa ekstra izin istemek hesabını tehlikeye sokabilir.
Adım Adım Çözüm Rehberi
- Developer Portal’a Git: Uygulamanı aç, Callback URLs kısmını kontrol et.
- Doğru URL Ekle: HTTPS formatında ve birebir eşleşen URL gir.
- Kodunu Kontrol Et:
redirect_uri
parametresini portal ile karşılaştır. - State Parametresi Kullan: Güvenlik için ekle.
- Test Et: Hem local (localhost) hem production ortamında test yap.
Örnek: “Mobil Uygulama Callback Sorunu”
Bir mobil uygulama geliştiren arkadaşım, callback URL’ini http://127.0.0.1:3000/auth
olarak girmişti. Bu adres HTTPS olmadığı için sürekli hata alıyordu. Çözüm olarak özel bir “custom scheme” (ör. myapp://auth
) tanımladı ve Developer portalına ekledi. Sorun çözüldü. 📱
Pro İpuçları 🚀
- Local test için ngrok kullan:
https://xxxx.ngrok.io/callback
şeklinde. - Çoklu ortam desteği: Hem staging hem production için ayrı callback URL ekle.
- Hata loglarını incele: HTTP yanıtındaki hata mesajlarını mutlaka logla.
- OAuth kütüphanelerini kullan: Örneğin Node.js için
passport-twitter
, Python içinrequests-oauthlib
. - Dokümantasyona göz at: API güncellemelerinde callback gereklilikleri değişebilir.
Kişisel Anekdot: “Slash Detayı”
Bir defasında callback URL’im https://site.com/callback/
(sonunda slash var) idi. Kodda ise https://site.com/callback
yazıyordu. Günlerce neden hata aldığımı anlamadım. Meğer tek fark o küçük slash’mış! 😅 O gün öğrendim ki OAuth, virgül kadar detaycı.
Sonuç: Callback Hatası Çözümsüz Değil
OAuth callback hatası ilk başta sinir bozucu olsa da çözüm aslında basit:
- URL’leri birebir eşleştir,
- HTTPS kullan,
- Güvenlik parametrelerini ekle.
Bunları yaptığında, uygulaman sorunsuz şekilde Twitter/X API’sine bağlanır. Ve sen de hata yerine başarı mesajları görürsün. 🚀