Firebase için API anahtarlarını kullanma ve yönetme hakkında bilgi
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
API anahtarı, Firebase ve Google hizmetleriyle etkileşim kurarken istekleri Firebase projenize yönlendirmek için kullanılan benzersiz bir dizedir. Bu sayfada, API anahtarları hakkında temel bilgilerin yanı sıra Firebase uygulamalarıyla API anahtarlarını kullanma ve yönetmeyle ilgili en iyi uygulamalar açıklanmaktadır.
API anahtarları ve Firebase hakkında genel bilgiler
Firebase için API anahtarları tipik API anahtarlarından farklıdır
API anahtarlarının genel olarak kullanılma şeklinden farklı olarak, Firebase hizmetleri için API anahtarları, arka uç kaynaklarına erişimi kontrol etmek amacıyla kullanılmaz. Bu, yalnızca Firebase Güvenlik Kuralları (hangi son kullanıcıların kaynaklara erişebileceğini kontrol etmek için) ve Firebase Uygulama Kontrolü ile (hangi uygulamaların kaynaklara erişebileceğini kontrol etmek için) yapılabilir.
Genellikle API anahtarlarını hızlı bir şekilde korumanız gerekir (örneğin, bir kasa hizmeti kullanarak veya anahtarları ortam değişkenleri olarak ayarlayarak). Ancak Firebase hizmetleri için API anahtarları, koda veya giriş yapılan yapılandırma dosyalarına eklenebilir.
Firebase projelerinin birçok API anahtarı olabilir ancak her API anahtarı yalnızca tek bir Firebase projesiyle ilişkilendirilebilir.
Firebase, aşağıdakilerden birini yaptığınızda projeniz için otomatik olarak API anahtarları oluşturur:
Firebase projesi oluştur > Browser key otomatik oluşturuldu
Firebase Apple Uygulaması oluştur > iOS key otomatik oluşturuldu
Firebase Android Uygulaması oluştur > Android key otomatik oluşturuldu
Ayrıca Google Cloud Console'da kendi API anahtarlarınızı da oluşturabilirsiniz (örneğin, geliştirme veya hata ayıklama için). Bu sayfanın sonraki bölümlerinde, bunun ne zaman önerilebileceği hakkında daha fazla bilgi edinebilirsiniz.
Firebase Apple Apps: Firebase yapılandırma dosyasındaki (GoogleService-Info.plist) otomatik olarak eşleştirilen API anahtarını, API_KEY alanında bulun.
Firebase Android Uygulamaları: Otomatik olarak eşleştirilen API anahtarını Firebase yapılandırma dosyasındaki (google-services.json) current_key alanında bulun.
Firebase Web Apps: Firebase yapılandırma nesnesindeki apiKey alanında bulunan otomatik eşleşen API anahtarını bulun.
Bir API anahtarını kullanma
API anahtarları, Firebase/Google hizmetleriyle etkileşimde bulunurken Firebase projenizi tanımlamak için kullanılır. Özellikle, kota ve faturalandırma için API isteklerini projenizle ilişkilendirmek amacıyla kullanılırlar. Ayrıca herkese açık verilere
erişirken de kullanışlıdırlar.
Örneğin, bir API anahtarının değerini sorgu parametresi olarak bir REST API çağrısına ileterek açıkça kullanabilirsiniz. Bu örnekte, Dynamic Links link kısaltıcı API'sine nasıl istekte bulunabileceğiniz gösterilmektedir:
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Uygulamanız, mobil/web istemcisi tarafından sağlanan bir API anahtarı gerektiren bir Firebase API'sine çağrı yaptığında, projenizin API anahtarı için otomatik olarak Firebase yapılandırma dosyasına/nesnesine bakar. Ancak uygulamanız için API anahtarlarını, ortam değişkenleri de dahil olmak üzere farklı bir mekanizma kullanarak sağlayabilirsiniz.
API anahtarlarına uygun kısıtlamaları inceleme ve bunlarla ilgili uygulama ((önerilir))
Firebase hizmetleri için API anahtarını gizli anahtar olarak değerlendirmeniz gerekmese de kısıtlamaları ve sınırları bu bölümde açıklanan şekilde inceleyip uygulamanız gerekir.
Firebase API anahtarlarınız için izin verilenler listesine otomatik olarak eklenen API'leri inceleyin
Firebase, projenizde bir API anahtarı oluşturduğunda bu anahtara otomatik olarak "API kısıtlamaları" ekleriz. Bu izin verilenler listesine eklenen API'ler, istemcinin çağrıyla birlikte API anahtarı sağlamasını gerektiren Firebase ile ilişkili API'lerdir. Firebase hizmetlerinin kullanımı için gereken çoğu API'nin, API anahtarlarınızın izin verilenler listesinde olması gerekmediğini unutmayın.
Firebase, tüm Firebase hizmetleri için gerekli API'leri eklediğinden, API anahtarının izin verilenler listesi, kullanmadığınız ürünlerin API'lerini içerebilir.
API'leri izin verilenler listesinden kaldırabilirsiniz ancak Firebase ve kullandığınız Firebase hizmetleri için gerekli olan API'leri kaldırmamaya çok dikkat etmeniz gerekir (her hizmet / ürün için izin verilenler listesinde olması gereken Firebase ile ilişkili API'lerin listesini inceleyin). Aksi takdirde, Firebase hizmetlerine çağrı yaparken hata alırsınız.
Şifre tabanlı Firebase Authentication kullanıyorsanız ve API anahtarınızı ele geçiren bir kişi Firebase Güvenlik Kuralları tarafından korunduğu sürece Firebase projenizin veritabanına veya Cloud Storage verilerine erişemez. Ancak API anahtarınızı kullanarak Firebase'in kimlik doğrulama uç noktalarına erişebilir ve projenizde kimlik doğrulama isteğinde bulunabilirler.
Birilerinin kaba kuvvet saldırısına teşebbüs etmek amacıyla API anahtarını kötüye kullanma olasılığını azaltmak için identitytoolkit.googleapis.com uç noktalarının varsayılan kotasını, uygulamanızın normal trafik beklentilerini yansıtacak şekilde sıkılaştırabilirsiniz. Bu kotayı sıkılaştırırsanız ve uygulamanız aniden kullanıcı kazanırsa kotayı artırana kadar oturum açma hataları alabileceğinizi unutmayın.
Projenizin API kotalarını Google Cloud Console'dan değiştirebilirsiniz.
Firebase dışı tüm hizmetler için ayrı, kısıtlanmış API anahtarları kullanın
Firebase hizmetleri için kullanılan API anahtarlarının genellikle gizli kabul edilmesi gerekmez ancak diğer Google Cloud API'leriyle kullandığınız API anahtarlarıyla ilgili olarak bazı ek önlemler almanız gerekir.
Firebase hizmetine / ürününe yönelik olmayan bir Google Cloud API (herhangi bir platformda) kullanıyorsanız bu API'lerle kullanmak için ayrı ve kısıtlanmış API anahtarları oluşturmanızı önemle tavsiye ederiz. Bu, özellikle API faturalandırılabilir bir Google Cloud hizmeti içinse önemlidir.
Örneğin, iOS'te Firebase ML ve Cloud Vision API'lerini kullanıyorsanız yalnızca Cloud Vision API'lerine erişmek için kullanacağınız ayrı API anahtarları oluşturmanız gerekir.
Firebase dışı API'ler için ayrı, kısıtlanmış API anahtarları kullanarak anahtarları gerektiğinde rotasyona sokabilir veya değiştirebilir ve Firebase hizmetlerinin kullanımını kesintiye uğratmadan API anahtarlarına ek kısıtlamalar ekleyebilirsiniz.
API'ye özel anahtarlar oluşturma talimatlarını görüntüleyin
Bu talimatlar, Super Service API adlı sahte bir API için ayrı, kısıtlanmış bir API anahtarının nasıl oluşturulacağını açıklar.
1. Adım: Mevcut API anahtarlarınızı, Super Service API erişimine izin vermeyecek şekilde yapılandırın
Google Cloud Console'un Kimlik Bilgileri sayfasını açın. İstendiğinde projenizi seçin.
Listedeki her API anahtarı için düzenleme görünümünü açın.
API kısıtlamaları bölümünde Anahtarı kısıtla'yı seçin ve API anahtarının erişebilmesini istediğiniz tüm API'leri listeye ekleyin. Ayrı bir API anahtarı oluşturduğunuz API'yi (bu örnekte Super Service API) eklemediğinizden emin olun.
Bir API anahtarının API kısıtlamalarını yapılandırdığınızda anahtarın erişebildiği API'leri açıkça beyan etmiş olursunuz. Varsayılan olarak, API kısıtlamaları bölümünde Anahtarı kısıtlama seçildiğinde proje için etkinleştirilmiş tüm API'lere erişmek için bir API anahtarı kullanılabilir.
Artık mevcut API anahtarlarınız Super Service API için erişim izni vermeyecek ancak her anahtar, API kısıtlamaları listesine eklediğiniz tüm API'ler için çalışmaya devam edecek.
2. Adım: Super Service API erişimi için yeni bir API anahtarı oluşturun ve kullanın
Kimlik Bilgileri sayfasına
dönün. Firebase projenizin hâlâ seçili olduğundan emin olun.
Kimlik bilgileri oluştur > API anahtarı'nı tıklayın. Yeni API anahtarını not edip Anahtarı kısıtla'yı tıklayın.
API kısıtlamaları bölümünde Anahtarı kısıtla'yı seçin ve ardından yalnızcaSuper Service API öğesini ekleyin.
Bu yeni API anahtarı yalnızca Super Service API öğesine erişim izni verir.
Uygulamanızı ve hizmetlerinizi yeni API anahtarını kullanacak şekilde yapılandırın.
Ortama özgü API anahtarları kullan (önerilir)
Hazırlık ve üretim gibi farklı ortamlar için farklı Firebase projeleri oluşturursanız her uygulama örneğinin, karşılık gelen Firebase projesiyle etkileşimde bulunması önemlidir. Örneğin, hazırlık uygulama örneğiniz hiçbir zaman üretim Firebase projenizle konuşmamalıdır. Bu aynı zamanda, hazırlık uygulamanızın, hazırlık Firebase projenizle ilişkili API anahtarlarını kullanması gerektiği anlamına da gelir.
Geliştirmeden hazırlık aşamasına ve üretime kadar kod değişikliklerini teşvik etme sorunlarını azaltmak için, API anahtarlarını kodun kendisine eklemek yerine ortam değişkenleri olarak ayarlayın veya bir yapılandırma dosyasına ekleyin.
Geliştirme için Firebase Local Emulator Suite'i Firebase ML ile birlikte kullanıyorsanız yalnızca hata ayıklama amaçlı bir API anahtarı oluşturmanız ve kullanmanız gerektiğini unutmayın. Bu tür anahtarların oluşturulmasıyla ilgili talimatları Firebase ML belgelerinde bulabilirsiniz.
SSS ve sorun giderme
SSS
Firebase hizmetleri için API anahtarları varsayılan olarak kısıtlanmış mıdır?
Evet, varsayılan olarak Firebase'in Firebase ile ilgili API'lerle kullanım için otomatik olarak sağladığı tüm API anahtarlarına "API Kısıtlamaları" otomatik olarak uygulanır. Bu izin verilenler listesinde yer alan Firebase ile ilgili API'lerin listesine bakın.
Bu izin verilenler listesine eklenen API'ler, Firebase hizmetleri tarafından istemci kodundan çağrılan API'lerdir ve Firebase projenizi veya uygulamanızı tanımlamak için API anahtarları gerektirir. Firebase hizmetlerinin kullanımı için gereken çoğu API'nin, API anahtarlarınız için izin verilenler listesinde olması gerekmediğini unutmayın.
Firebase, tüm Firebase hizmetleri için gerekli API'leri eklediğinden, API anahtarının izin verilenler listesi, kullanmadığınız ürünlerin API'lerini içerebilir. API'leri izin verilenler listesinden kaldırabilirsiniz ancak Firebase ve kullandığınız Firebase hizmetleri için gerekli olan API'leri kaldırmamaya çok dikkat etmeniz gerekir (her hizmet / ürün için izin verilenler listesinde olması gereken Firebase ile ilişkili API'lerin listesini inceleyin). Aksi takdirde, Firebase hizmetlerine çağrı yaparken hata alırsınız.
Tüm API anahtarlarınızı ve bunların "API kısıtlamalarını" Google Cloud Console'daki API'ler ve Hizmetler > Kimlik Bilgileri panelinde görüntüleyebilirsiniz.
Firebase'in bu "API kısıtlamalarını" nasıl uyguladığına dair aşağıdaki noktaları göz önünde bulundurun:
Mayıs 2024'ten itibaren, Firebase tarafından otomatik olarak sağlanan tüm yeni API anahtarları otomatik olarak Firebase ile ilgili API'ler listesiyle kısıtlanacaktır.
Mayıs 2024'te, Firebase'in daha önce otomatik olarak sağladığı tüm mevcut ve kısıtlanmamış API anahtarları, Firebase ile ilgili API'ler listesiyleve projenin şu anda etkin olan API'leriyle sınırlandırılmıştır.
Firebase'in daha önce otomatik olarak sağladığı mevcut ve zaten kısıtlanmış API anahtarları değiştirilmemiştir.
Firebase tarafından otomatik olarak sağlanmayan mevcut API anahtarları değiştirilmemiştir.
Hangi API anahtarının Firebase uygulamamla ilişkili olduğunu nasıl belirleyebilirim?
Hangi API anahtarının Firebase Uygulamanızla ilişkili olduğunu belirlemek için aşağıdaki seçeneklerden herhangi birini kullanabilirsiniz:
Firebase konsolu
settingsProje ayarları'na, ardından ekranı aşağı kaydırarak Uygulamalarınız kartına gidin.
İstediğiniz uygulamayı seçin.
İlgilendiğiniz uygulamanın Firebase yapılandırma dosyasını/nesnesini ve ardından API anahtarını bulun:
Apple: GoogleService-Info.plist dosyasını indirin ve ardından API_KEY alanını bulun
Android: google-services.json dosyasını indirin, ilgilendiğiniz uygulamanın yapılandırmasını (paket adını arayın) ve ardından current_key alanını bulun
Web: Config seçeneğini belirleyin ve apiKey alanını bulun
Firebase CLI
Aşağıdaki komutu çalıştırarak ilgili uygulama için Firebase yapılandırma dosyasını/nesnesini edinin:
firebase apps:sdkconfig PLATFORMFIREBASE_APP_ID
PLATFORM (biri): IOS | ANDROID | WEB
FIREBASE_APP_ID: Firebase Uygulamanız için Firebase tarafından atanan benzersiz tanımlayıcı (Uygulama Kimliğinizi bulun)
Uygulamanın basılı Firebase yapılandırmasında API anahtarını bulun:
Elma: API_KEY alanını bulun
Android: İlgilendiğiniz uygulamanın yapılandırmasını (paket adını arayın) ve ardından current_key alanını bulun
Web: apiKey alanını bulun
REST API
İlgilenilen uygulama için uygun uç noktayı çağırarak ve ardından apiKeyId değerini bir sonraki adıma geçirerek API anahtarının apiKeyId'sini (UID) edinin.
Bu keyString, Uygulamanın yapılandırma yapısında bulunan değerle aynıdır (Apple |
Android |
Web).
Firebase yapılandırma dosyamda/nesnemde aynı Firebase Uygulaması için iki API anahtarı listeleyebilir miyim?
Firebase Apple Apps - Her uygulamanın kendi yapılandırma dosyası vardır ve yalnızca bir API anahtarı listelenir.
Firebase Android Uygulamaları - Firebase projesindeki tüm Android uygulamaları aynı yapılandırma dosyasında listelenir ve her uygulama yalnızca bir API anahtarına sahip olabilir. Yine de, bu yapılandırma dosyasındaki her uygulamanın farklı bir anahtarı listelenebilir.
Firebase Web Uygulamaları: Her uygulamanın kendi yapılandırma nesnesi vardır ve yalnızca bir API anahtarı listelenir.
Yine de tek bir uygulamayla birden fazla API anahtarı kullanabilirsiniz. Uygulamanızın bu diğer API anahtarlarına erişmesi için ortam değişkeni gibi bir mekanizma sağlamanız gerekir. Diğer API anahtarlarına erişme mekanizması, Firebase yapılandırma dosyanızda/nesnenizde listelenen API anahtarlarına bağlı olamaz.
Firebase, hangi API anahtarının bir uygulamayla eşleştirileceğini (Firebase yapılandırma dosyası/nesnesi gibi) nasıl bilebilir?
Firebase eşleşen kısıtlanmış anahtar bulamazsa yapılandırma dosyasında/nesnede Apple uygulamaları için iOS key, Android uygulamaları için Android key ve web uygulamaları için Browser key öğelerini listeler (bu anahtarların mevcut olduğu ve bunların bu uygulamayla eşleşmesini engelleyen "Uygulama Kısıtlamaları" bulunmadığı varsayılır).
API anahtarını ve alanını Firebase yapılandırma dosyamdan/nesnemden manuel olarak silebilir miyim?
Evet, API anahtarınızı yapılandırma dosyanızdan/nesnenizden manuel olarak silebilirsiniz. Ancak uygulamanızın API anahtarına erişmesi için başka bir mekanizma sağlamanız gerekir (ör. ortam değişkeni aracılığıyla). Aksi takdirde, Firebase hizmetlerine yapılan çağrılar başarısız olur.
Firebase yapılandırma dosyamı/nesnemi farklı API anahtarlarıyla manuel olarak düzenleyebilir miyim?
Evet, yapılandırma dosyasını/nesnesini bir uygulamayla farklı bir API anahtarı ilişkilendirmek için manuel olarak düzenleyebilirsiniz.
Bir API anahtarını bir Firebase projesinden diğerine taşıyabilir miyim?
Hayır. API anahtarı yalnızca belirli bir projeyi tanımlar ve başka bir projeye taşınamaz.
Google Cloud Console'da listelenen bir API anahtarını silersem ne olur?
Bir uygulama tarafından kullanılmakta olan bir API anahtarını silerseniz o uygulamadan gelen API çağrıları başarısız olur. Geçersiz bir API anahtarı kullanmaya çalıştığınız raporlar, e-postalar veya hatalar alabilirsiniz.
API anahtarı silme kalıcı bir işlemdir ve geri alınamaz.
Bir Firebase API anahtarı için "API kısıtlamaları" izin verilenler listesinde hangi API'lerin bulunması gerekir?
Bir Firebase API anahtarı için anahtarın "API kısıtlamaları" izin verilenler listesinde olması gereken tek API, istemcinin çağrıyla birlikte API anahtarı sağlamasını gerektiren API'lerdir. Bu gereklilik, Firebase ile ilişkili API'lerin çok azına sahiptir. Projenizde etkinleştirilen Firebase ile ilgili çoğu API'nin, anahtarın "API kısıtlamaları" izin verilenler listesinde bulunması gerekmez.
Firebase API anahtarı için "API kısıtlamaları" izin verilenler listesine Firebase ile ilgili hangi API'lerin eklenmesi gerektiğini belirlemek amacıyla aşağıdaki tabloyu kullanın. Firebase API anahtarlarının yalnızca Firebase hizmetleri için kullanılması gerektiğini unutmayın. Belirli API türleri için ayrı, kısıtlanmış API anahtarları oluşturma hakkında daha fazla bilgi edinin.
Cloud Messaging, Crashlytics, Uygulama İçi Mesajlaşma, Performans İzleme, Remote Config, Firebase ML
firebaseappcheck.googleapis.com
Firebase Uygulama Kontrolü API'si
Uygulama Kontrolü
firebaseappdistribution.googleapis.com
Firebase App Distribution API'si
App Distribution
firebaseapptesters.googleapis.com
Firebase App Testers API'si
App Distribution
identitytoolkit.googleapis.com
Identity Toolkit API
Doğrulama
securetoken.googleapis.com
Jeton Hizmeti API'sı
Doğrulama
firebaserules.googleapis.com *
Firebase Kuralları API'si
Cloud Firestore, Cloud Storage, Realtime Database
datastore.googleapis.com
Cloud Datastore API
Cloud Firestore
firestore.googleapis.com
Google Cloud Firestore API'si
Cloud Firestore
fcmregistrations.googleapis.com
FCM Kayıt API'sı
Cloud Messaging
firebasestorage.googleapis.com
Cloud Storage for Firebase API'sı
Cloud Storage
firebasedynamiclinks.googleapis.com
Firebase Dynamic Links API'si
Dynamic Links
firebasehosting.googleapis.com *
Firebase Hosting API'si
Hosting
firebaseinappmessaging.googleapis.com
Firebase Uygulama İçi Mesajlaşma API'si
Uygulama İçi Mesajlaşma
firebaseml.googleapis.com
Firebase ML API'si
Firebase ML, Firebase için Vertex AI
mlkit.googleapis.com **
Makine Öğrenimi Kiti API'si
Firebase ML
mobilecrashreporting.googleapis.com
Mobile Crash Reporting API
Performance Monitoring
play.googleapis.com
Google Play Android Geliştirici API'sı
Performance Monitoring
firebaseremoteconfig.googleapis.com
Firebase Remote Config API'si
Performans İzleme, Remote Config
firebaseremoteconfigrealtime.googleapis.com
Firebase Remote Config Realtime API'si
Performans İzleme, Remote Config
cloudconfig.googleapis.com **
Yok
Remote Config
firebasedatabase.googleapis.com *
Firebase Realtime Database API'si
Realtime Database
* Yalnızca Firebase API anahtarını üçüncü taraf araçlarla kullanıyorsanız veya Firebase hizmetine / ürüne doğrudan REST erişimi kullanıyorsanız gerekir.
** Ürünün SDK'sının önceki sürümleri için gereklidir. SDK'nın en son sürümünü kullanıyorsanız API'nin, anahtarın izin verilenler listesinde olması gerekmez.
Sorun giderme
Bu API'ye yapılan isteklerin engellendiğini belirten bir API_KEY_SERVICE_BLOCKED veya Forbidden 403 hatasını nasıl düzeltebilirim?
API_KEY_SERVICE_BLOCKED hatası veya aşağıdakine benzer bir hata alırsanız bu SSS'deki yönergeleri uygulayın:
Forbidden: 403 POST https://example-service.googleapis.com/method: Requests to this API example-service.googleapis.com method google.example-service.rest.method are blocked.
Uygulamanızın API'yi çağırmak için kullandığı API anahtarına büyük olasılıkla "API Kısıtlamaları" uygulanmıştır ve anahtarın izin verilenler listesi bu API'yi içermez.
Firebase olmayan bir hizmeti kullanmaya çalışırken bu hatayı alıyorsanız söz konusu hizmet ve API için özel olarak yeni bir API anahtarı oluşturmanızı önemle tavsiye ederiz. Firebase API anahtarları yalnızca Firebase hizmetleri / ürünleri için kullanılmalıdır.
Belirli API türleri için ayrı, kısıtlanmış API anahtarları oluşturma hakkında daha fazla bilgi edinin.
Bu hatayı nasıl düzeltebilirim? "Bu Firebase uygulamasının ölçüm kimliği sunucudan alınamadı."
Web uygulamanız tarafından kullanılan API anahtarına büyük olasılıkla "API Kısıtlamaları" uygulanmıştır. Bu durumda, Firebase Management API'nin izin verilen API'ler listesinde bulunduğundan emin olun.
API anahtarımın geçersiz olduğuna dair bir e-posta veya hata aldım. Sorun ne oldu ve bunu nasıl düzeltebilirim?
Geçersiz API anahtarlarının en yaygın nedenlerinden bazıları şunlardır:
API anahtarı, "API Anahtarı Kısıtlamaları"na sahiptir. Bu nedenle, anahtarı kullanmaya çalışan uygulamayla eşleşmez ("Uygulama Kısıtlamaları") veya çağrılan API için kullanılamaz ("API Kısıtlamaları").
API anahtarı, Google Cloud Console'daki projeden silindi.
Uygulamanın Firebase yapılandırma dosyasında/nesnesinde listelenen Proje Kimliği için API anahtarı oluşturulmamıştır.