API anahtarı, Firebase ve Google hizmetleriyle etkileşimde bulunurken istekleri Firebase projenize yönlendirmek için kullanılan benzersiz bir dizedir. Bu sayfada API anahtarlarıyla ilgili temel bilgilerin yanı sıra Firebase uygulamalarıyla API anahtarlarını kullanmaya ve yönetmeye yönelik 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 kullanımından farklı olarak Firebase hizmetlerine yönelik API anahtarları, arka uç kaynaklarına erişimi denetlemek için kullanılmaz ; bu yalnızca Firebase Güvenlik Kuralları (hangi kullanıcıların kaynaklara erişebileceğini kontrol etmek için) ve Uygulama Kontrolü (hangi uygulamaların kaynaklara erişebileceğini kontrol etmek için) ile yapılabilir.
Genellikle API anahtarlarını titizlikle korumanız gerekir (örneğin, bir kasa hizmeti kullanarak veya anahtarları ortam değişkenleri olarak ayarlayarak); ancak Firebase hizmetlerine ilişkin API anahtarlarının koda veya teslim edilen yapılandırma dosyalarına eklenmesi uygundur.
Firebase hizmetlerine ilişkin API anahtarlarının koda dahil edilmesi güvenli olsa da, API anahtarınız için sınırlar uygulamanız gereken birkaç özel durum vardır; örneğin, Firebase ML, e-posta/şifre ile oturum açma yöntemiyle Firebase Authentication veya faturalandırılabilir bir Google Cloud API kullanıyorsanız. Bu vakalar hakkında daha sonra bu sayfada daha fazla bilgi edinebilirsiniz.
API anahtarları oluşturma
Bir Firebase projesinin birçok API anahtarı olabilir, ancak her bir API anahtarı yalnızca tek bir Firebase projesiyle ilişkilendirilebilir.
Aşağıdakilerden herhangi birini yaptığınızda Firebase, projeniz için otomatik olarak API anahtarları oluşturur:
- Firebase projesi oluşturun > Otomatik olarak oluşturulan
Browser key
- Firebase Apple Uygulaması oluşturun > Otomatik olarak oluşturulan
iOS key
- Firebase Android Uygulaması oluşturun > Otomatik olarak oluşturulan
Android key
Ayrıca, örneğin geliştirme veya hata ayıklama amacıyla Google Cloud Console'da kendi API anahtarlarınızı da oluşturabilirsiniz. Bunun daha sonra ne zaman önerilebileceği hakkında daha fazla bilgiyi bu sayfada bulabilirsiniz.
API anahtarlarınızı bulma
Projenizin tüm API anahtarlarını Google Cloud Console'daki API'ler ve Hizmetler > Kimlik Bilgileri panelinde görüntüleyebilir ve yönetebilirsiniz.
Ayrıca hangi API anahtarının bir Firebase Uygulamasıyla otomatik olarak eşleştirildiğini aşağıdaki yerlerde de bulabilirsiniz. Varsayılan olarak, projenizin aynı platforma yönelik tüm Firebase Uygulamaları (Apple, Android ve Web) aynı API anahtarını kullanacaktır.
Firebase Apple Apps — Bir uygulamanın otomatik olarak eşleşen API anahtarını,
API_KEY
alanındaki Firebase yapılandırma dosyasındaki
bulun.GoogleService-Info.plist Firebase Android Uygulamaları — Bir uygulamanın otomatik olarak eşleşen API anahtarını Firebase yapılandırma dosyasında (
google-services.json current_key
alanında bulun.Firebase Web Apps — Bir uygulamanın otomatik olarak eşleşen API anahtarını
apiKey
alanındaki Firebase yapılandırma nesnesinde bulun.
API anahtarı kullanma
API anahtarları, Firebase/Google hizmetleriyle etkileşimde bulunurken Firebase projenizi tanımlamak için kullanılır. Özellikle kota ve faturalandırma amacıyla API isteklerini projenizle ilişkilendirmek için kullanılırlar. Ayrıca genel verilere erişim açısından da faydalıdırlar.
Örneğin, bir API anahtarını, değerini bir REST API çağrısına sorgu parametresi olarak ileterek açıkça kullanabilirsiniz. Bu örnek , Dinamik Bağlantılar bağlantı kısaltıcı API'sine nasıl istekte bulunabileceğinizi gösterir:
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Uygulamanız bir Firebase API'sine çağrı yaptığında uygulamanız, projenizin API anahtarı için otomatik olarak Firebase yapılandırma dosyasına/nesnesine bakacaktır. Ancak API anahtarlarınızı ortam değişkenleri de dahil olmak üzere farklı bir mekanizma kullanarak ayarlayabilirsiniz.
API anahtarlarına kısıtlamalar uygulayın (önerilir)
Firebase hizmetleri için bir API anahtarını sır olarak ele almak gerekli olmasa da, projenizi API anahtarının kötüye kullanılmasından korumak için ek önlemler almak isteyebileceğiniz bazı özel durumlar (aşağıya bakın) vardır.
Parola tabanlı Kimlik Doğrulama kullanıyorsanız kotayı sıkılaştırın
Şifre tabanlı Firebase Kimlik Doğrulaması kullanıyorsanız ve birisi API anahtarınızı ele geçirirse, bu veriler Firebase Güvenlik Kuralları tarafından korunduğu sürece Firebase projenizin veritabanına veya Bulut Depolama verilerine erişemez . Ancak Firebase'in kimlik doğrulama uç noktalarına erişmek ve projenize karşı kimlik doğrulama isteklerinde bulunmak için API anahtarınızı kullanabilirler.
Birisinin kaba kuvvet saldırısı girişiminde bulunmak amacıyla bir API anahtarını kötüye kullanması 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ırıncaya kadar oturum açma hataları alabileceğinizi unutmayın. Projenizin API kotalarını Google Cloud Console'da değiştirebilirsiniz.
Belirli API türleri için ayrı, kısıtlı API anahtarları kullanın
Firebase hizmetleri için kullanılan API anahtarlarının genellikle gizli olarak ele alınması gerekmese de, manuel olarak etkinleştirdiğiniz Google Cloud API'lerine erişim izni vermek için kullanılan API anahtarlarıyla ilgili bazı ekstra önlemler almanız gerekir.
Firebase tarafından otomatik olarak etkinleştirilmeyen bir Google Cloud API (herhangi bir platformda) kullanıyorsanız (yani bunu kendiniz etkinleştirdiyseniz), bu API'lerle kullanmak için ayrı, kısıtlı API anahtarları oluşturmayı düşünmelisiniz. API faturalandırılabilir bir Google Cloud hizmeti içinse bu özellikle önemlidir.
Örneğin, iOS'ta Firebase ML'nin Cloud Vision API'lerini kullanıyorsanız yalnızca Cloud Vision API'lere erişim için kullandığınız ayrı API anahtarları oluşturmalısınız .
Firebase dışı API'ler için ayrı, kısıtlanmış API anahtarları kullanarak, gerektiğinde anahtarları döndürebilir veya değiştirebilir ve Firebase hizmetlerini kullanımınızı kesintiye uğratmadan API anahtarlarına ek kısıtlamalar ekleyebilirsiniz .
Bu talimatlarda Super Service API
adı verilen sahte bir API için ayrı, kısıtlı bir API anahtarının nasıl oluşturulacağı açıklanmaktadır.
1. Adım: Super Service API
erişime izin vermemek için mevcut API anahtarlarınızı yapılandırın
Google Cloud Console'un Kimlik Bilgileri sayfasını açın. İstendiğinde projenizi seçin.
Listedeki mevcut 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 seçeneğini seçin ve ardından API anahtarının erişmesini 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şim sahibi olduğu API'leri açıkça beyan etmiş olursunuz. Varsayılan olarak, API kısıtlamaları bölümünde Anahtarı kısıtlama seçeneği seçili olduğunda, proje için etkinleştirilen herhangi bir API'ye erişmek için bir API anahtarı kullanılabilir.
Artık mevcut API anahtarlarınız Super Service API
erişim vermeyecek ancak her bir anahtar, API kısıtlama listesine eklediğiniz tüm API'ler için çalışmaya devam edecek.
2. Adım: Super Service API
erişim için yeni bir API anahtarı oluşturun ve kullanın
Kimlik Bilgileri sayfasına geri 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 edin ve ardından Anahtarı kısıtla'yı tıklayın.
API kısıtlamaları bölümünde Anahtarı kısıtla seçeneğini seçin ve ardından listeye yalnızca
Super Service API
ekleyin.Bu yeni API anahtarı yalnızca
Super Service API
erişim sağlar.Uygulamanızı ve hizmetlerinizi yeni API anahtarını kullanacak şekilde yapılandırın.
Ortama özel API anahtarlarını kullanın (önerilir)
Aşama ve üretim gibi farklı ortamlar için farklı Firebase projeleri oluşturursanız her uygulama örneğinin, karşılık gelen Firebase projesiyle etkileşime girmesi önemlidir. Örneğin, hazırlama uygulaması örneğiniz hiçbir zaman üretim Firebase projenizle konuşmamalıdır. Bu aynı zamanda hazırlama uygulamanızın, hazırlama Firebase projenizle ilişkili API anahtarlarını kullanması gerektiği anlamına da gelir.
Geliştirmeden aşamalandırmaya ve üretime kadar kod değişikliklerini teşvik eden sorunları azaltmak için, API anahtarlarını kodun kendisine dahil etmek yerine, bunları ortam değişkenleri olarak ayarlayın veya bir yapılandırma dosyasına ekleyin.
Firebase ML ile birlikte geliştirme için Firebase Local Emulator Suite'i kullanıyorsanız, yalnızca hata ayıklama amaçlı bir API anahtarı oluşturup kullanmanız gerektiğini unutmayın. Bu tür bir anahtarın oluşturulmasına ilişkin talimatlar Firebase ML belgelerinde bulunur.
SSS
Firebase Uygulamanızla hangi API anahtarının ilişkilendirildiğini belirlemek için aşağıdaki seçeneklerden herhangi birini kullanabilirsiniz:
Firebase konsolu
Proje ayarları'na gidin ve ardından Uygulamalarınız kartına doğru aşağı kaydırın.
İlgilendiğiniz uygulamayı seçin.
İlgilendiğiniz uygulama için Firebase yapılandırma dosyasını/nesnesini edinin ve ardından API anahtarını bulun:
Apple :
GoogleService-Info.plist
indirin ve ardındanAPI_KEY
alanını bulunAndroid :
google-services.json
dosyasını indirin, ilgilendiğiniz uygulamanın yapılandırmasını bulun (paket adını arayın) ve ardındancurrent_key
alanını bulunWeb : Yapılandırma seçeneğini seçin ve ardından
apiKey
alanını bulun
Firebase CLI
Aşağıdaki komutu çalıştırarak ilgilenilen 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 )
- PLATFORM (biri):
Uygulamanın basılı Firebase yapılandırmasında API anahtarını bulun:
Apple :
API_KEY
alanını bulunAndroid : İlgilendiğiniz uygulamanın yapılandırmasını bulun (paket adını arayın) ve ardından
current_key
alanını bulunWeb :
apiKey
alanını bulun
REST API'si
İlgili uygulama için geçerli uç noktayı çağırarak ve ardından
apiKeyId
değerini bir sonraki adıma aktararak API anahtarınınapiKeyId
(UID) edinin.- Apple :
projects.iosApps.get
arayın - Android :
projects.androidApps.get
arayın - Web :
projects.webApps.get
arayın
- Apple :
projects.locations.keys.getKeyString
çağırarak API anahtar dizesini edinin.Bu
keyString
Uygulamanın yapılandırma yapısında ( Apple | Android | Web ) bulunabilen değerle aynıdır.
Firebase Apple Apps — Her uygulamanın kendi yapılandırma dosyası vardır ve yalnızca bir API anahtarı listelenebilir.
Firebase Android Uygulamaları — Firebase projesindeki tüm Android uygulamaları aynı yapılandırma dosyasında listelenir ve her uygulamada yalnızca bir API anahtarı listelenebilir. Ancak 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 listelenen yalnızca bir API anahtarı olabilir.
Ancak tek bir uygulamayla birden fazla API anahtarı kullanabilirsiniz . Uygulamanızın bu diğer API anahtarlarına erişmesi için örneğin bir ortam değişkeni aracılığıyla 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.
Uygulamanızın Firebase yapılandırma dosyasını/nesnesini ilk aldığınızda Firebase, projenizde uygulamayla eşleşen "Uygulama Kısıtlamalarına" sahip mevcut API anahtarlarının (örneğin, Apple uygulaması için eşleşen bir paket kimliği) olup olmadığını kontrol eder.
Firebase eşleşen herhangi bir kısıtlanmış anahtar bulamazsa yapılandırma dosyasında/nesnesinde Apple uygulamaları için iOS key
, Android key
ve web uygulamaları için Browser key
listeler (bu anahtarların mevcut olduğu ve söz konusu uygulamayla eşleşmelerini engelleyen "Uygulama Kısıtlamaları" yoktur).
Evet, API anahtarınızı yapılandırma dosyanızdan/nesnenizden manuel olarak silebilirsiniz. Ancak uygulamanızın bir API anahtarına erişmesi için (bir ortam değişkeni aracılığıyla olduğu gibi) başka bir mekanizma sağlamanız gerekir . Aksi takdirde Firebase hizmetlerine yapılan çağrılar başarısız olur.
Evet, farklı bir API anahtarını bir uygulamayla ilişkilendirmek için bir yapılandırma dosyasını/nesnesini manuel olarak düzenleyebilirsiniz.
Uygulamanızın yapılandırma dosyasını/nesnesini konsoldan yeniden alırsanız Firebase'in o uygulamayla otomatik olarak eşleştirdiği API anahtarlarının her zaman listeleneceğini unutmayın. Bu nedenle, manuel düzenlemelerinizi gerektiği gibi tekrarlamanız gerekecektir.
Hayır, bir API anahtarı yalnızca belirli bir projeyi tanımlar ve başka bir projeye taşınamaz.
Geçersiz API anahtarlarının en yaygın nedenlerinden birkaçı aşağıda verilmiştir:
API anahtarına uygulanan "API Anahtar Kısıtlamaları" , anahtarı kullanmaya çalışan uygulamayla eşleştirilemez ("Uygulama Kısıtlamaları") veya çağrılan API için kullanılamaz hale getirir ("API Kısıtlamaları").
API anahtarı Google Cloud Console'daki projeden silindi.
API anahtarı, uygulamanın Firebase yapılandırma dosyasında/nesnesinde listelenen Proje Kimliği için oluşturulmadı.
Bu sorunu düzeltmenin bir yolu , uygulamanızın Firebase yapılandırma dosyasının/nesnesinin güncellenmiş sürümünü edinmek ve ardından eski yapılandırma dosyanızı/nesnenizi yeni güncellenmiş dosya/nesneyle değiştirmektir . Konsolda bir yapılandırma nesnesini indirmek veya görüntülemek için bir yapılandırma dosyası göndermeden önce Firebase, listelenen API anahtarlarının uygulamalarla eşleşip eşleşmediğini kontrol eder.
Web uygulamanız tarafından kullanılan API anahtarına muhtemelen "API Kısıtlamaları" uygulanmıştır. Durum buysa Firebase Management API'nin izin verilen API'ler listesinde olduğundan emin olun.
Bir uygulamanın kullandığı bir API anahtarını silerseniz o uygulamadan yapılan API çağrıları başarısız olur. Geçersiz bir API anahtarı kullanmaya çalıştığınıza dair raporlar, e-postalar veya hatalar alabilirsiniz.
API anahtarının silinmesi kalıcı bir işlemdir ve geri alınamaz.