10 KiB
Clerk Kimlik Doğrulama Kurulum Rehberi
📋 Genel Bakış
LetsGoCappadocia uygulaması, kullanıcı kimlik doğrulama için Clerk.com kullanmaktadır. Bu rehber, Clerk API anahtarlarını nasıl alacağınızı ve yapılandıracağınızı adım adım açıklar.
🔑 Gerekli API Anahtarları
1. VITE_CLERK_PUBLISHABLE_KEY (Frontend)
- Açıklama: Frontend uygulamasında kullanıcı kimlik doğrulama için gerekli
- Format:
pk_test_...veyapk_live_...ile başlar - Kullanım Yeri: React uygulaması (.env dosyası)
- Güvenlik: Public key - tarayıcıda görünür olabilir
2. CLERK_SECRET_KEY (Backend)
- Açıklama: Backend webhook doğrulama ve admin işlemleri için gerekli
- Format:
sk_test_...veyask_live_...ile başlar - Kullanım Yeri: Supabase Edge Functions
- Güvenlik: ⚠️ GİZLİ - Asla frontend'de kullanmayın!
3. CLERK_WEBHOOK_SECRET (Webhook)
- Açıklama: Clerk webhook'larını doğrulamak için gerekli
- Format:
whsec_...ile başlar - Kullanım Yeri: Supabase Edge Functions (clerk-webhook)
- Güvenlik: ⚠️ GİZLİ - Webhook güvenliği için kritik
📝 Adım Adım Kurulum
Adım 1: Clerk Hesabı Oluşturma
- Clerk.com'a gidin: https://clerk.com/
- Sign Up butonuna tıklayın
- E-posta adresinizle kayıt olun
- E-posta doğrulamasını tamamlayın
Adım 2: Yeni Uygulama Oluşturma
- Clerk Dashboard'a giriş yapın
- "Create Application" butonuna tıklayın
- Uygulama adını girin:
LetsGoCappadocia - Kimlik doğrulama yöntemlerini seçin:
- ✅ Google (opsiyonel)
- ✅ Phone (opsiyonel)
- Create Application butonuna tıklayın
Adım 3: API Anahtarlarını Alma
3.1 Publishable Key ve Secret Key
-
Clerk Dashboard'da sol menüden "API Keys" seçeneğine tıklayın
-
Publishable Key bölümünü bulun:
pk_test_...ile başlayan anahtarı kopyalayın- Bu anahtarı
VITE_CLERK_PUBLISHABLE_KEYolarak kaydedin
-
Secret Keys bölümünü bulun:
sk_test_...ile başlayan anahtarı kopyalayın- ⚠️ "Show" butonuna tıklayarak anahtarı görünür hale getirin
- Bu anahtarı
CLERK_SECRET_KEYolarak kaydedin
3.2 Webhook Secret
- Clerk Dashboard'da sol menüden "Webhooks" seçeneğine tıklayın
- "Add Endpoint" butonuna tıklayın
- Webhook URL'ini girin:
https://vtztatcglebrnvikvntf.supabase.co/functions/v1/clerk-webhook - Events bölümünde şu olayları seçin:
- ✅
user.created - ✅
user.updated - ✅
user.deleted
- ✅
- Create butonuna tıklayın
- Oluşturulan webhook'un detay sayfasında "Signing Secret" bölümünü bulun
whsec_...ile başlayan anahtarı kopyalayın- Bu anahtarı
CLERK_WEBHOOK_SECRETolarak kaydedin
🔧 Anahtarları Yapılandırma
Yöntem 1: .env Dosyası (Önerilen - Development)
- Proje kök dizinindeki
.envdosyasını açın - Aşağıdaki satırları ekleyin:
# Clerk Authentication
VITE_CLERK_PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- Dosyayı kaydedin
- Development server'ı yeniden başlatın:
npm run dev
Yöntem 2: Admin Panel (Önerilen - Production)
- Uygulamaya admin olarak giriş yapın
- Admin Panel > Settings sayfasına gidin
- "API Keys Management" bölümünü bulun
- "Add New Key" butonuna tıklayın
- Her anahtar için:
- Key Name:
VITE_CLERK_PUBLISHABLE_KEY - Key Value: Kopyaladığınız publishable key
- Save butonuna tıklayın
- Key Name:
Yöntem 3: Supabase Secrets (Backend Anahtarları)
Backend anahtarları (CLERK_SECRET_KEY, CLERK_WEBHOOK_SECRET) Supabase Edge Functions için yapılandırılmalıdır:
- Supabase Dashboard'a gidin: https://supabase.com/dashboard
- Projenizi seçin:
vtztatcglebrnvikvntf - Sol menüden "Edge Functions" seçeneğine tıklayın
- "Manage secrets" butonuna tıklayın
- Her secret için:
- Name:
CLERK_SECRET_KEY - Value: Kopyaladığınız secret key
- Add butonuna tıklayın
- Name:
- Aynı işlemi
CLERK_WEBHOOK_SECRETiçin tekrarlayın
✅ Doğrulama
Frontend Doğrulama
- Uygulamayı açın: http://localhost:5173
- Sign In veya Sign Up sayfasına gidin
- Clerk login formu görünüyorsa ✅ başarılı
- Eğer hata mesajı görüyorsanız:
- Browser console'u açın (F12)
- Hata mesajlarını kontrol edin
VITE_CLERK_PUBLISHABLE_KEYdoğru mu kontrol edin
Backend Doğrulama
- Admin Panel'e giriş yapın
- Admin Panel > Clerk Diagnostics sayfasına gidin
- "Test Clerk Connection" butonuna tıklayın
- Başarılı mesajı görüyorsanız ✅ backend doğru yapılandırılmış
Webhook Doğrulama
- Clerk Dashboard > Webhooks sayfasına gidin
- Oluşturduğunuz webhook'u seçin
- "Send test event" butonuna tıklayın
user.createdevent'ini seçin- Send butonuna tıklayın
- Response
200 OKise ✅ webhook çalışıyor
🔒 Güvenlik En İyi Uygulamaları
✅ Yapılması Gerekenler
-
Secret Key'leri Asla Paylaşmayın
- GitHub, Slack, email gibi platformlarda paylaşmayın
- Screenshot alırken anahtarları gizleyin
-
Environment Variables Kullanın
- Anahtarları kod içine hard-code etmeyin
.envdosyasını.gitignore'a ekleyin
-
Development ve Production Anahtarlarını Ayırın
- Test için
pk_test_...vesk_test_...kullanın - Production için
pk_live_...vesk_live_...kullanın
- Test için
-
Anahtarları Düzenli Olarak Rotate Edin
- Her 3-6 ayda bir anahtarları yenileyin
- Şüpheli aktivite durumunda hemen yenileyin
-
Webhook Secret'ı Koruyun
- Webhook endpoint'inizi public yapmayın
- Sadece Clerk IP'lerinden gelen istekleri kabul edin
❌ Yapılmaması Gerekenler
-
Frontend'de Secret Key Kullanmayın
CLERK_SECRET_KEYsadece backend'de kullanılmalı- Browser'da görünür olmamalı
-
Anahtarları Git'e Commit Etmeyin
.envdosyasını commit etmeyin.env.examplekullanın (değerler olmadan)
-
Public Repository'lerde Anahtarları Paylaşmayın
- GitHub, GitLab gibi platformlarda anahtarları expose etmeyin
🐛 Sorun Giderme
Hata: "Clerk Publishable Key bulunamadı"
Çözüm:
.envdosyasındaVITE_CLERK_PUBLISHABLE_KEYtanımlı mı kontrol edin- Anahtar
pk_ile başlıyor mu kontrol edin - Development server'ı yeniden başlatın:
npm run dev - Browser cache'ini temizleyin (Ctrl+Shift+R)
Hata: "Invalid Clerk API Key"
Çözüm:
- Clerk Dashboard'da API Keys sayfasına gidin
- Anahtarın aktif olduğunu kontrol edin
- Doğru environment'ı (test/live) kullandığınızdan emin olun
- Anahtarı yeniden kopyalayıp yapıştırın (boşluk karakteri olmamalı)
Hata: "Webhook signature verification failed"
Çözüm:
CLERK_WEBHOOK_SECRETdoğru mu kontrol edin- Webhook URL'inin doğru olduğunu kontrol edin
- Clerk Dashboard'da webhook'un aktif olduğunu kontrol edin
- Supabase Edge Function'ın deploy edildiğini kontrol edin
Hata: "User profile not created after sign up"
Çözüm:
- Webhook'un çalıştığını kontrol edin (yukarıdaki webhook doğrulama)
- Supabase logs'u kontrol edin:
- Supabase Dashboard > Edge Functions > clerk-webhook > Logs
- Database'de
profilestablosunu kontrol edin - RLS policies'in doğru yapılandırıldığını kontrol edin
📊 Clerk Dashboard Özellikleri
User Management
- Users: Tüm kullanıcıları görüntüleyin ve yönetin
- Organizations: Organizasyon yönetimi (opsiyonel)
- Sessions: Aktif oturumları görüntüleyin
Authentication
- Email/Password: E-posta ve şifre ile giriş
- Social Logins: Google, Facebook, GitHub entegrasyonu
- Phone: SMS ile telefon doğrulama
- Multi-factor: 2FA desteği
Customization
- Appearance: Login/signup formlarının görünümünü özelleştirin
- Localization: Türkçe dil desteği (uygulama içinde yapılandırılmış)
- Branding: Logo ve renk teması özelleştirme
Analytics
- Sign-ups: Günlük/haftalık kayıt istatistikleri
- Active Users: Aktif kullanıcı sayısı
- Sessions: Oturum süreleri ve aktivite
💰 Fiyatlandırma
Free Tier (Development)
- ✅ 10,000 Monthly Active Users (MAU)
- ✅ Tüm authentication yöntemleri
- ✅ Webhooks
- ✅ Email support
- ✅ Test environment
Pro Plan ($25/month)
- ✅ 10,000 MAU dahil
- ✅ $0.02/MAU sonrası
- ✅ Custom domains
- ✅ Advanced analytics
- ✅ Priority support
Enterprise (Custom)
- ✅ Unlimited MAU
- ✅ SLA guarantees
- ✅ Dedicated support
- ✅ Custom integrations
Not: Development için Free tier yeterlidir. Production'da kullanıcı sayınıza göre plan seçin.
🔗 Faydalı Linkler
- Clerk Dashboard: https://dashboard.clerk.com/
- Clerk Documentation: https://clerk.com/docs
- Clerk React SDK: https://clerk.com/docs/references/react/overview
- Clerk Webhooks: https://clerk.com/docs/integrations/webhooks
- Supabase Dashboard: https://supabase.com/dashboard/project/vtztatcglebrnvikvntf
📞 Destek
Clerk Desteği
- Email: support@clerk.com
- Discord: https://clerk.com/discord
- Documentation: https://clerk.com/docs
Uygulama Desteği
- Admin Panel: Admin Panel > Settings > Support
- Logs: Admin Panel > Logs
✨ Özet Checklist
Kurulumu tamamlamak için:
- Clerk hesabı oluşturuldu
- Yeni uygulama oluşturuldu
VITE_CLERK_PUBLISHABLE_KEYalındı ve yapılandırıldıCLERK_SECRET_KEYalındı ve Supabase'e eklendi- Webhook endpoint oluşturuldu
CLERK_WEBHOOK_SECRETalındı ve Supabase'e eklendi- Frontend doğrulaması yapıldı (login formu görünüyor)
- Backend doğrulaması yapıldı (Clerk Diagnostics)
- Webhook doğrulaması yapıldı (test event gönderildi)
- Test kullanıcı kaydı oluşturuldu
- Profile database'de oluşturuldu
Tüm adımlar tamamlandığında ✅ Clerk entegrasyonu hazır!
Son Güncelleme: 2026-02-26 Versiyon: 1.0