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.
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 hizmetleri için API anahtarlarını koda eklemek güvenli olsa da API anahtarınız için sınırları zorunlu kılmanız gereken birkaç belirli durum vardır. Örneğin Firebase ML, e-posta/şifre oturum açma yöntemiyle Firebase Authentication veya faturalandırılabilir bir Google Cloud API kullanıyorsanız bu durumla karşılaşabilirsiniz. Bu sayfanın ilerleyen kısımlarında bu durumlar hakkında daha fazla bilgi edinebilirsiniz.
API anahtarlarınızı kısıtlayarak ve/veya gizleyerek değil, Firebase Güvenlik Kuralları ile veritabanınızın ve Cloud Storage verilerinizin güvenliğini sağlayın.
API anahtarları oluşturma
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
Önemli: Firebase tarafından otomatik oluşturulan API anahtarlarında varsayılan olarak kısıtlama yoktur. Bununla birlikte, API anahtarınız için sınırları zorunlu kılmanız gereken birkaç spesifik durum vardır.
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.
API anahtarlarınızı bulma
Projenizin API anahtarlarını tüm Google Cloud Console'daki API'ler ve Hizmetler > Kimlik Bilgileri panelinde görüntüleyebilir ve yönetebilirsiniz.
Ayrıca, aşağıdaki yerlerde hangi API anahtarının bir Firebase uygulamasıyla otomatik olarak eşlendiğini bulabilirsiniz. Varsayılan olarak, projenizin aynı platformdaki tüm Firebase uygulamaları (Apple, Android ve Web) aynı API anahtarını kullanır.
Firebase Apple Apps : Firebase yapılandırma dosyasındaki (GoogleService-Info.plist
) API_KEY
alanında bir uygulamanın otomatik olarak eşleştirilen API anahtarını bulun.
Firebase Android Uygulamaları : Bir uygulamanın otomatik olarak eşleşen 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 bir uygulamanın 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. Bununla birlikte, API anahtarlarınızı ortam değişkenleri de dahil olmak üzere farklı bir mekanizma kullanarak ayarlayabilirsiniz.
API anahtarlarına kısıtlama uygula (önerilir)
Firebase hizmetleri için API anahtarını gizli olarak ele almak gerekli olmasa da projenizin API anahtarının kötüye kullanımını engellemek için ek önlemler almak isteyebileceğiniz bazı durumlar (aşağıya bakın) vardır.
Bir API anahtarı şu anda bir üretim uygulaması tarafından kullanılıyorsa söz konusu API anahtarına kısıtlamalar eklerken dikkatli olmanız gerekir. Üretim API anahtarınıza herhangi bir kısıtlama eklemeden önce kısıtlamalarınızı bir test uygulamasında ve test API anahtarıyla test etmeniz gerekir.
Şifre tabanlı kimlik doğrulama kullanıyorsanız kotayı daraltın
Hangi kimlik doğrulama seçeneğini kullanırsanız kullanın Firebase Güvenlik Kuralları 'nı kullanarak veritabanınızın ve Cloud Storage verilerinizin güvenliğini sağlayın .
Ş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.
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.
Önemli: İleride başka API'leri etkinleştirirseniz bunları geçerli API anahtarının API kısıtlamaları listesine eklemeniz gerekir.
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ızca Super 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
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
settings
Proje 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 PLATFORM FIREBASE_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.
projects.locations.keys.getKeyString
yöntemini çağırarak API anahtarı dizesini 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?
Uygulamanızın Firebase yapılandırma dosyasını/nesnesini ilk kez edindiğinizde Firebase, projenizde uygulamayla eşleşen "Uygulama Kısıtlamaları" içeren mevcut API anahtarları (örneğin, Apple uygulaması için eşleşen paket kimliği) olup olmadığını kontrol eder.
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.
Firebase yapılandırma dosyanızdaki/nesnenizdeki API anahtarını manuel olarak düzenlemek mümkündür ancak genellikle önerilmez . Firebase hizmetlerine erişimle ilgili sorun yaşanma ihtimali artar. Ancak yapılandırma dosyanızı/nesnenizi düzenlerseniz aşağıdakileri kontrol edin:
API anahtarı, yapılandırma dosyasında/nesnesinde listelenen proje kimliğine ayarlanır.
API anahtarının bu uygulamayla birlikte kullanılmasını engelleyebilecek "API Anahtarı Kısıtlamaları" yoktur.
Konsoldan uygulamanızın yapılandırma dosyasını/nesnesini yeniden edinirseniz Firebase'in bu uygulamayla otomatik olarak eşleştirdiği API anahtarları daima listelenir. Bu nedenle, manuel düzenlemelerinizi gerektiğinde tekrarlamanız gerekir.
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.
Önemli: Firebase ile ilgili API'lerin hiçbiri, API'yi çağırmak için yetkilendirme olarak API anahtarı kullanmaz. API çağrısıyla iletilen API anahtarı yalnızca Firebase projesinin veya uygulamasının tanımlanması için kullanılır.
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.
Projenizin API anahtarlarını Google Cloud Console'daki API'ler ve Hizmetler > Kimlik Bilgileri panelinde görüntüleyebilir ve yönetebilirsiniz.
Not: Firebase ile ilgili bir API'yi çağırmaya çalışırken API_KEY_SERVICE_BLOCKED
veya Forbidden 403 hatası alıyorsanız ve kullandığınız API anahtarı bu tabloda listelenen tüm gerekli API'leri içeriyorsa Firebase Destek Ekibi ile iletişime geçin.
API adı (hizmet adı)
API görünen adı
İlişkilendirilmiş Firebase hizmet / ürün
firebase.googleapis.com
Firebase Management API
tüm ürünler
logging.googleapis.com
Cloud Logging API
tüm ürünler
firebaseinstallations.googleapis.com
Firebase Installations API'si
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.
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.
Bu sorunu düzeltmenin bir yolu, uygulamanızın Firebase yapılandırma dosyasının/nesnesinin güncellenmiş sürümünü edinmek , ardından eski yapılandırma dosyanızı/nesnenizi yeni güncellenmiş dosya/nesne ile değiştirmektir .
Firebase, indirme için bir yapılandırma dosyası göndermeden veya konsolda bir yapılandırma nesnesini görüntülemeden önce, listelenen API anahtarlarının uygulamalarla eşleşip eşleşmediğini kontrol eder .