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ıyla ilgili temel bilgilerin yanı sıra, API anahtarlarını Firebase uygulamalarıyla kullanmak ve yönetmek için 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 tipik olarak nasıl kullanıldığının aksine, Firebase hizmetleri için API anahtarları, arka uç kaynaklarına erişimi kontrol etmek 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 hizmetleri için API anahtarları, koda veya teslim edilen yapılandırma dosyalarına dahil edilebilir.
Firebase hizmetleri için API anahtarlarının koda dahil edilmesi güvenli olsa da, API anahtarınız için sınırlamalar uygulamanız gereken birkaç özel 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 sayfada daha sonra bu vakalar hakkında daha fazla bilgi edinin.
API anahtarları oluşturma
Bir Firebase projesinin birçok API anahtarı olabilir, ancak her API anahtarı yalnızca tek bir Firebase projesiyle ilişkilendirilebilir.
Aşağıdakilerden herhangi birini yaptığınızda, Firebase otomatik olarak projeniz için API anahtarları oluşturur:
- Bir Firebase projesi oluşturun > Otomatik olarak oluşturulan
Browser key
- Bir Firebase Apple Uygulaması oluşturun > otomatik olarak oluşturulan
iOS key
- Bir Firebase Android Uygulaması oluşturun > otomatik olarak oluşturulan
Android key
Ayrıca, örneğin geliştirme veya hata ayıklama için Google Cloud Console'da kendi API anahtarlarınızı oluşturabilirsiniz. Bu sayfada daha sonra bunun ne zaman önerilebileceği hakkında daha fazla bilgi edinin.
API anahtarlarınızı bulma
Google Cloud Console'daki API'ler ve Hizmetler > Kimlik Bilgileri panelinde projenizin tüm API anahtarlarını görüntüleyebilir ve yönetebilirsiniz.
Hangi API anahtarının bir Firebase Uygulaması ile otomatik olarak eşleştirildiğini aşağıdaki yerlerde de bulabilirsiniz. Varsayılan olarak, aynı platform için projenizin tüm Firebase Uygulamaları (Apple vs Android vs Web) aynı API anahtarını kullanır.
Firebase Apple Apps — Bir uygulamanın otomatik eşleşen API anahtarını Firebase yapılandırma dosyasında,
,GoogleService-Info.plist API_KEY
alanında bulun.Firebase Android Uygulamaları - Bir uygulamanın otomatik eşleşen API anahtarını Firebase yapılandırma dosyasında (
)google-services.json current_key
alanında bulun.Firebase Web Uygulamaları - Bir uygulamanın otomatik eşleşen API anahtarını,
apiKey
alanındaki Firebase yapılandırma nesnesinde bulun.
API anahtarı kullanma
API anahtarları, Firebase/Google hizmetleriyle etkileşim kurarken Firebase projenizi tanımlamak için kullanılır. Spesifik olarak, kota ve faturalandırma için API isteklerini projenizle ilişkilendirmek için kullanılırlar. Ayrıca genel verilere erişmek için de kullanışlıdırlar.
Örneğin, değerini bir REST API çağrısına sorgu parametresi olarak ileterek bir API anahtarını 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, projenizin API anahtarı için otomatik olarak Firebase yapılandırma dosyasına/nesnesine bakar. Ancak, ortam değişkenleri dahil olmak üzere farklı bir mekanizma kullanarak API anahtarlarınızı ayarlayabilirsiniz.
API anahtarlarına kısıtlamalar uygulayın (önerilir)
Firebase hizmetleri için bir API anahtarını gizli olarak ele almak gerekli olmasa da, projenizi API anahtarının kötüye kullanımı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ın
Parola tabanlı Firebase Kimlik Doğrulaması kullanırsanız ve birileri 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 istekleri yapmak için API anahtarınızı kullanabilirler.
Birinin bir kaba kuvvet saldırısı girişiminde bulunmak için bir API anahtarını kötüye kullanma olasılığını azaltmak için, uygulamanızın normal trafik beklentilerini yansıtmak için identitytoolkit.googleapis.com
uç noktalarının varsayılan kotasını daraltabilirsiniz. Bu kotayı daraltı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'da değiştirebilirsiniz.
Belirli API türleri için ayrı, kısıtlanmış 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 vermek için kullanılan API anahtarlarıyla ilgili bazı ek önlemler almalısınız.
Firebase tarafından otomatik olarak etkinleştirilmeyen bir Google Cloud API'si (herhangi bir platformda) kullanıyorsanız (yani bunu kendiniz etkinleştirdiyseniz), bu API'lerle kullanım 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'lerine erişmek için kullandığınız ayrı API anahtarları oluşturmalısınız .
Firebase dışı API'ler için ayrı, kısıtlı 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 talimatlar, Super Service API
adlı sahte bir API için ayrı, kısıtlı bir API anahtarının nasıl oluşturulacağını açıklar.
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 öğesini seçin, 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 eklemediğinizden emin olun (bu örnekte,
Super Service API
).Bir API anahtarının API kısıtlamalarını yapılandırdığınızda, anahtarın erişime sahip 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ç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 izni 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 dönün. Firebase projenizin hala seçili olduğundan emin olun.
Kimlik bilgileri oluştur > API anahtarı öğesini tıklayın. Yeni API anahtarını not alın, ardından Anahtarı kısıtla 'yı tıklayın.
API kısıtlamaları bölümünde Anahtarı kısıtla öğesini seçin, 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)
Hazırlama ve üretim gibi farklı ortamlar için farklı Firebase projeleri ayarlarsanız, her uygulama örneğinin karşılık gelen Firebase projesiyle etkileşime girmesi önemlidir. Örneğin, hazırlama uygulaması örneğiniz asla ü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 gelir.
API anahtarlarını kodun kendisine dahil etmek yerine, geliştirmeden hazırlamaya ve üretime kadar kod değişikliklerini teşvik eden sorunları azaltmak için, 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 kullanıyorsanız, yalnızca hata ayıklama API anahtarı oluşturmanız ve kullanmanız gerektiğini unutmayın. Bu tür bir anahtar oluşturmaya yönelik 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 gidin.
İ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 yazdırılan 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 bitiş noktasını çağırarak ve ardından
apiKeyId
değerini sonraki adıma geçirerek API anahtarınınapiKeyId
(UID) edinin.- Apple :
projects.iosApps.get
arayın - Android :
projects.androidApps.get
çağırın - Web :
projects.webApps.get
arayın
- Apple :
projects.locations.keys.getKeyString
öğesini çağırarak API anahtar dizesini edinin.Bu
keyString
, Uygulamanın yapılandırma yapısında ( Apple | Android | Web ) bulunabilen değerin aynısıdır.
Firebase Apple Uygulamaları - Her uygulamanın kendi yapılandırma dosyası vardır ve listelenen yalnızca bir API anahtarı olabilir.
Firebase Android Uygulamaları - Firebase projesindeki tüm Android uygulamaları aynı yapılandırma dosyasında listelenir ve her uygulamanın yalnızca bir API anahtarı listelenebilir. Yine de bu yapılandırma dosyasındaki her uygulamanın listelenen farklı bir anahtarı olabilir.
Firebase Web Uygulamaları — Her uygulamanın kendi yapılandırma nesnesi vardır ve listelenen yalnızca bir API anahtarı olabilir.
Yine de, bir uygulama ile birden fazla API anahtarı kullanabilirsiniz . Uygulamanızın bu diğer API anahtarlarına, örneğin bir ortam değişkeni aracılığıyla erişmesi için bir mekanizma sağlamalısınız. Diğer API anahtarlarına erişim 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 (örneğin, Apple uygulaması için eşleşen bir paket kimliği) sahip herhangi bir API anahtarı 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 uygulamaları için Android Android key
ve web uygulamaları için Browser key
listeler (bu anahtarların mevcut olduğu ve o 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 başka bir mekanizma sağlamalısınız (bir ortam değişkeni aracılığıyla gibi). 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, her zaman Firebase'in o uygulamayla otomatik olarak eşleştirdiği API anahtarlarını listeleyeceğini unutmayın. Bu nedenle, manuel düzenlemelerinizi gerektiği gibi tekrarlamanız gerekecek.
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 bazıları şunlardır:
API anahtarında, anahtarı kullanmaya çalışan uygulamayla ("Uygulama Kısıtlamaları") eşleşmeyen veya çağrılan API için kullanılamaz ("API Kısıtlamaları") olan "API Anahtarı Kısıtlamaları" vardır.
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. Bu durumda, Firebase Management API'nin izin verilen API'ler listesinde olduğundan emin olun.
Bir uygulama tarafından kullanılan 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.
Bir API anahtarının silinmesi kalıcıdır ve geri alınamaz.