İçeriğe atla
supastack
Dokümanlara göz atın
WebNext.js

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /tr/docs/web/apple-sign-in.md (or send Accept: text/markdown).

Apple ile giriş ekleyin

Apple Developer portalında bir App ID, bir Services ID ve bir Sign in with Apple anahtarı kaydedin ve istemci çiftini uygulamaya bağlayın.

Başlangıç seviyesinde izlenecek yol

Ön koşullar: web uygulaması yerelde çalışıyor (5 dakikada yayınlayın), gerçek hesaplar için geçiş yapılmış bir veritabanı (Veritabanını kurun) ve bir Apple Developer Program üyeliği — mobil hesap rehberinin kaydettiği yıllık 99$'lık aynı hesap, henüz yapmadıysanız devam etmeden önce o adımı tamamlayın. Aşağıdaki geliştirici portalındaki hiçbir şey ekstra ücretli değildir.

Neden önemli: App Store incelemesi, iOS uygulaması Google veya GitHub gibi üçüncü taraf sosyal giriş sunduğunda Sign in with Apple gerektirir ve web'de de sağlam, düşük sürtünmeli bir düğmedir — Apple kullanıcıları cihazlarında zaten bulunan hesapla giriş yapar.

Kısa terimler: bir App ID, uygulamanızın kayıtlı tanımlayıcısıdır (com.yourcompany.yourapp). Services ID, Apple'ın web ve sunucu girişi için verdiği ikinci bir tanımlayıcıdır — istemci kimliğiniz olur. Return URL, Apple'ın giriş yapmış kullanıcıyı geri gönderebileceği tam adrestir — kit'in Better Auth geri çağrısı. Gizli anahtar, Apple'ın bir kez verdiği .p8 dosyasıdır; onu kendiniz istemci gizli anahtarına çevirirsiniz.

1. Sign in with Apple yeteneği olan bir App ID kaydedin. 2. Ona işaret eden ve alan adınız ile return URL'yi tutan bir Services ID kaydedin. 3. Bir Sign in with Apple anahtarı oluşturun ve .p8 dosyasını indirin. 4. Anahtarı bir client-secret JWT'ye çevirin ve üç env değerini ayarlayın.

Dürüst bir kısıtlama: Apple'ın return URL'leri kayıtlı bir alan adında mutlak https:// adresleri olmalıdır — localhost ve düz http reddedilir, bu yüzden düğme çıplak bir yerel sunucuda tam olarak denenemez. Dağıtılmış URL'nizde doğrulayın ya da yerel sunucuyu bir https tünelinin (ör. cloudflared tunnel veya ngrok) arkasında açın ve test sırasında tünel alan adı ile geri çağrısını kaydedin.

App ID'yi kaydedin

1. developer.apple.com/account sayfasını açın ve Developer Program üyeliğine sahip hesapla giriş yapın.

2. Certificates, Identifiers & Profiles → Identifiers sayfasını açın ve mavi + düğmesine tıklayın.

3. App IDs → Continue'yu seçin, türü App'te tutun → Continue.

4. Description: ürün adınız. Bundle ID: Explicit'i seçin ve ters alan adı biçimi com.yourcompany.yourapp girin — iOS uygulamasını gönderiyorsanız tam olarak apps/mobile/app.json içindeki ios.bundleIdentifier kullanın ki iki platform aynı App ID'yi paylaşsın.

5. Yetenek listesinde Sign in with Apple'ı işaretleyin → Continue → Register.

Beklenen: tanımlayıcı, Sign in with Apple yeteneği etkin olarak Identifiers listesinde görünür. Bu tek App ID'yi yeniden kullanın — Services ID ve anahtar ikisi de ana uygulama olarak ona bağlanır.

Services ID ve return URL'yi kaydedin

1. Identifiers'a dönün, tekrar +'ya tıklayın, Services IDs → Continue'yu seçin.

2. Description: yourapp web sign-in gibi bir şey. Identifier: başka bir ters alan adı — com.yourcompany.yourapp.web gelenekseldir — bilerek App ID'den farklı. Bu Services ID, sunucunun web girişi için kullandığı istemci kimliğidir; onu tam olarak kopyalayın, ardından Continue → Register.

3. Listede yeni Services ID'yi seçin, Sign in with Apple'ı işaretleyin ve Configure'a tıklayın.

4. İletişim kutusunda Primary App ID'yi önceki bölümdeki App ID'ye ayarlayın. Website URLs altına alan adınızı (ör. yourdomain.com), Return URLs altına ise https://yourdomain.com/api/auth/callback/apple ekleyin — bu yol kit'in Better Auth geri çağrısıdır, {APP_URL}/api/auth/callback/apple. Save → Continue → Save.

Her return URL, kayıtlı bir alan adında mutlak https:// adresi olmalıdır: localhost, çıplak IP adresleri ve http reddedilir. Yerel geliştirme için uygulamayı bir https tünelinin arkasında çalıştırın, tünel alan adını Services ID'ye ekleyin, https://<tunnel-domain>/api/auth/callback/apple kaydedin ve test sırasında APP_URL tünel URL'sine ayarlayın.

Beklenen: Services ID, Sign in with Apple → Enabled gösterir. Portal alan adınızı reddederse önce hesap sayfasında alan adı sahipliği doğrulamasını tamamlayın.

Sign in with Apple anahtarı oluşturun

1. Sol kenar çubuğunda Keys → +'yı açın. Anahtara ad verin (ör. yourapp sign-in key), Sign in with Apple'ı işaretleyin, Configure'a tıklayın, App ID'yi Primary App ID seçin → Save → Continue → Register.

2. Onay ekranında Key ID'yi not edin, ardından Download'a tıklayın — .p8 dosyası tam olarak bir kez sunulur. Kaybederseniz anahtarı iptal edin ve yenisini oluşturun; Apple kopya saklamaz.

3. Team ID'nizi de not edin — geliştirici hesap sayfalarının sağ üst köşesinde, hesap adınızın yanında yazılıdır.

Beklenen: artık üç değere sahipsiniz — .p8 dosyası, bir Key ID ve Team ID'niz. .p8 dosyasını Git'in dışında tutun: geliştirici hesabınız olarak imzalar.

Değerleri uygulamaya ekleyin

Kit tam olarak aşağıdaki üç satırı bekler — her sosyal sağlayıcının kullandığı aynı clientId/clientSecret çifti. APPLE_CLIENT_ID, App ID değil Services ID'dir (com.yourcompany.yourapp.web).

Apple statik bir istemci gizli anahtarı vermez, bu yüzden APPLE_CLIENT_SECRET sizin Team ID, Key ID ve .p8 özel anahtarından imzaladığınız bir JWT'dir — Better Auth belgeleri bunun için kısa üretici betiği sağlar. İmzalı gizli anahtar en fazla altı ay geçerli kalır: onu yeniden üretmek ve env değerini güncellemek için bir hatırlatıcı ayarlayın, çünkü süresi dolduğu an giriş başarısız olur. .p8 dosyasının içeriğini veya ham Key ID'yi asla env'e yapıştırmayın — oraya yalnızca üretilmiş JWT girer.

İstemci gizli anahtarı ve .p8 dosyası yalnızca sunucudadır: asla NEXT_PUBLIC_/EXPO_PUBLIC_ değişkenlerinde veya commit'lerde olmamalı — üretimde bunları hostunuzun gizli deposu aracılığıyla ayarlayın. Düzenledikten sonra geliştirme sunucusunu yeniden başlatın; env değişiklikleri başlangıçta okunur.

# apps/web/.env.local
AUTH_APPLE_ENABLED=true
APPLE_CLIENT_ID=com.yourcompany.yourapp.web   # the Services ID, not the App ID
APPLE_CLIENT_SECRET=<JWT signed with Team ID + Key ID + .p8>

Doğrulayın ve sorun giderin

APP_URL'nizi — dağıtılmış URL veya https tüneli — /auth üzerinde açın, Apple düğmesine tıklayın, herhangi bir Apple ID ile giriş yapın (geliştirici hesabı olmak zorunda değil) ve giriş yapmış olarak döndüğünüzü doğrulayın.

Çoğu hata üç karışıklıktan biridir: Services ID ile App ID — istemci kimliği web girişi için Services ID olmalıdır; return URL uyuşmazlığı — geri çağrı protokol, alan adı ve yol dahil kayıtlı bir Return URL'ye tam olarak eşit olmalıdır; veya süresi dolmuş/geçersiz istemci gizli anahtarı — JWT'yi yeniden üretin, o yalnızca imzalı bir belirteçtir, .p8 içeriği değildir.

AUTH_APPLE_ENABLED=true ayarlanana kadar /auth üzerindeki Apple seçeneği devre dışı kalır — env adlarını kontrol edin ve yeniden başlatın. Bayrağı hem APPLE_CLIENT_ID hem APPLE_CLIENT_SECRET olmadan etkinleştirmek başlangıcı düşürür ve eksik değişkeni adlandırır.

iOS uygulaması aynı arka uca ulaşır — App Store incelemesinin diğer sosyal düğmeleri kabul etmesi için içine Sign in with Apple gönderin. Mobil hesap rehberi incelemenin ne aradığını açıklar.

Kuruluma devam etmek için Stripe ödemeleri ekleyin kılavuzunu okuyun.

Sık sorulan sorular

14 soru

supastack nedir?

supastack, YZ destekli SaaS ürünleri oluşturmak için modüler bir temeldir. Ortak altyapıyı bir araya getirir, böylece ürüne özgü özelliklere odaklanabilirsiniz.

Web ve mobil destekliyor mu?

Evet. supastack, web ve mobil deneyimler için başlangıç noktası olarak Next.js ve Expo uygulamaları içerir.

Hangi kimlik doğrulama dahil?

Better Auth; e-posta/parola, OTP ve sosyal girişi kapsar. Kişisel çalışma alanları hesapla birlikte sağlanır, böylece ürün kayıtları ilk günden itibaren sınırlı kalır.

YZ'yi nasıl destekliyor?

supastack; yapılandırılabilir çok sağlayıcılı YZ, kullanım takibi, bütçeler ve şifreli kendi-anahtarını-getir desteği içerir.

Abonelikler nasıl ele alınıyor?

Kit üzerine kurulu ürünler için Stripe faturalama, abonelikler ve yetkilendirmeler ücretli erişim temelini oluşturur. Sağlayıcı gizli anahtarları yalnızca sunucuda kalır.

Ürüne özgü kodum nerede durur?

Ürüne özgü özellikler ayrı bir kod tabanında kalırken ürün, supastack'in temel modüllerini yapılandırır ve entegre eder.

supastack fiyatlandırması nasıl çalışır?

Kit, ömür boyu güncellemeli tek seferlik bir satın alımdır: 249 $'a Tek Platform (geçici tanıtım fiyatı — normal fiyat 349 $ üzerinden 100 $ indirim) — Next.js (Web), Expo (iOS ve Android) veya Tauri (macOS ve Windows Masaüstü) seçiminiz — ya da tüm platformları ve tam monorepo'yu içeren 499 $'lık Tüm Platformlar Paketi (geçici tanıtım fiyatı — normal fiyat 599 $ üzerinden 100 $ indirim); ek geliştirici koltuğu başına 75 $. Kit aboneliği yok. Bu sitedeki ödeme, lisans anahtarınızı e-postayla teslim eder ve depo erişimi GitHub davetiyle sağlanır.

Çalışma alanları verilerimi nasıl sınırlar?

Kullanıcıya ait kayıtlar workspaceId ile sınırlanır. Kimlik, yetkilendirmeler, YZ kullanımı, faturalama olayları ve denetim kayıtları kişisel çalışma alanı sınırının içinde kalır.

Arka plan işleri nasıl çalışır?

Trigger.dev açık iş çalışma zamanıdır. JobRunner sözleşmesi yalnızca enqueue, status ve cancel vaat eder — iş akışı semantiği Trigger.dev'e özgü ve açık kalır.

E-posta, tanıtım yazılarından nasıl farklı?

İşlemsel e-posta, tamamlanma bildirimleri gibi ürün iş akışlarını kapsar. Soğuk tanıtım ve kampanyalar, bu kitin e-posta modülünün dışında kalan ürün konularıdır.

Mobil satın almalar nasıl çalışır?

Mobil uygulama RevenueCat ile yerel satın alma ve geri yükleme sunar; erişimi sunucunuz doğrular. Yayınlamadan önce mağaza hesaplarını yapılandırın ve cihaz testlerini tamamlayın. Web faturalandırması ayrı kalır.

YZ sağlayıcı anahtarları nerede durur?

Kendi-anahtarını-getir kimlik bilgileri şifrelidir ve yalnızca sunucuda kalır. Anahtarlar günlüklerden gizlenir; kullanım ve bütçeler çalışma alanı düzeyinde görünür kalır.

Ödeme hangi ödeme yöntemlerini kabul ediyor?

Stripe tarafından barındırılan ödeme sayfası kartları kabul eder; cüzdanlar Stripe hesabında etkinleştirildiğinde Alipay ve WeChat Pay de sunabilir — Çin'deki alıcılar için kullanışlı. Cüzdan yetkilendirmeleri eşzamansız onaylanır; ödeme tamamlanır tamamlanmaz lisans sayfası güncellenir.

Geri ödeme alabilir miyim?

Depoya erişim kazandıktan sonra supastack sonsuza kadar sizin olur, bu nedenle geri ödeme yapılamaz. Ancak içiniz rahat olsun: kendiniz veya müşterileriniz için sınırsız sayıda ürün geliştirip yayınlamak üzere ömür boyu güncellemeler içeren eksiksiz kaynak koduna sahip olursunuz. Yalnızca kodu yeniden satamaz veya depoyu bir başlangıç kiti ya da şablon olarak yeniden dağıtamazsınız.

TR
Tema