Firebase için API anahtarlarını kullanma ve yönetme hakkında bilgi
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 bilgiler ve API anahtarlarını Firebase uygulamalarıyla kullanma ve yönetmeyle ilgili en iyi uygulamalar açıklanmaktadır.
API anahtarları ve Firebase hakkında genel bilgiler
Firebase API anahtarları, normal API anahtarlarından farklıdır
API anahtarlarının genellikle kullanılmasının aksine, Firebase hizmetlerinin API anahtarları arka uç kaynaklarına erişimi kontrol etmek için kullanılmaz. Bu işlem yalnızca Firebase Security Rules (son kullanıcıların kaynaklara erişimini kontrol etmek için) ve Firebase App Check (uygulamaların kaynaklara erişimini kontrol etmek için) ile yapılabilir.
Genellikle API anahtarlarını titizlikle korumanız gerekir (ör. bir şifreleme hizmeti kullanarak veya anahtarları ortam değişkenleri olarak ayarlayarak). Ancak Firebase hizmetlerinin API anahtarlarını koda veya kontrollü yapılandırma dosyalarına eklemenizde sakınca yoktur.
Bir Firebase projesinde çok sayıda API anahtarı olabilir ancak her API anahtarı yalnızca tek bir Firebase projesiyle ilişkilendirilebilir.
Firebase, aşağıdakilerden herhangi birini yaptığınızda projeniz için otomatik olarak API anahtarları oluşturur:
Firebase projesi oluşturma > Browser key otomatik olarak oluşturuldu
Firebase Apple uygulaması oluşturma > iOS key otomatik olarak oluşturuldu
Firebase Android uygulaması oluşturma > Android key otomatik olarak oluşturuldu
Google Cloud konsolunda da kendi API anahtarlarınızı oluşturabilirsiniz. Örneğin, geliştirme veya hata ayıklama için. Bu özelliğin ne zaman önerilebileceği hakkında daha fazla bilgiyi bu sayfanın ilerleyen bölümlerinde bulabilirsiniz.
Firebase Apple Uygulamaları: Otomatik olarak eşlenen API anahtarını Firebase yapılandırma dosyasında, GoogleService-Info.plist alanındaki API_KEY alanında bulun.
Firebase Android Uygulamaları: Otomatik olarak eşlenen API anahtarını, google-services.json Firebase yapılandırma dosyasında current_key alanında bulabilirsiniz.
Firebase Web Uygulamaları: Otomatik olarak eşlenen API anahtarını Firebase yapılandırma nesnesinde, apiKey alanında bulun.
Bir API anahtarını kullanma
API anahtarları, Firebase/Google hizmetleriyle etkileşimde bulunurken Firebase projenizi tanımlamak için kullanılır. Daha açık belirtmek gerekirse, API isteklerini kota ve faturalandırma için projenizle ilişkilendirmek amacıyla kullanılırlar. Ayrıca herkese açık verilere erişmek için de yararlıdırlar.
Örneğin, değerini bir REST API çağrısına sorgu parametresi olarak göndererek API anahtarını açıkça kullanabilirsiniz. Bu örnekte, Dynamic Links bağlantı kısaltıcı API'ye nasıl istek gönderebileceğ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ını otomatik olarak Firebase yapılandırma dosyasında/nesnesinde arar. Ancak, ortam değişkenleri de dahil olmak üzere farklı bir mekanizma kullanarak uygulamanız için API anahtarları sağlayabilirsiniz.
API anahtarlarını inceleyip uygun kısıtlamaları uygulayın (önerilir)
Firebase hizmetleri için API anahtarını gizli olarak ele almak gerekli olmasa da bu bölümde açıklanan kısıtlamaları ve sınırları incelemeniz ve uygulamanız gerekir.
Firebase API anahtarlarınız için izin verilenler listesine otomatik olarak eklenen API'leri inceleme
Firebase, projenizde bir API anahtarı oluşturduğunda bu anahtara otomatik olarak "API kısıtlamaları" ekler. Bu izin verilenler listesine eklenen API'ler, istemcinin çağrıyla birlikte bir API anahtarı sağlamasını gerektiren Firebase ile ilgili API'lerdir. Firebase hizmetlerinin kullanımı için gereken API'lerin çoğunun, 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 gereken API'leri kaldırmamaya çok dikkat etmeniz gerekir (her hizmet / ürün için izin verilenler listesinde olması gereken Firebase ile ilgili API'lerin listesine bakın). Aksi takdirde, Firebase hizmetlerini çağırırken hata alırsınız.
Şifre tabanlı Firebase Authentication kullanıyorsanız ve API anahtarınız ele geçirilirse Firebase Security Rules tarafından korunan Firebase projenizin veritabanına veya Cloud Storage verilerine erişemez. Ancak Firebase'in kimlik doğrulama uç noktalarına erişmek ve projenizle ilgili kimlik doğrulama istekleri göndermek için API anahtarınızı kullanabilirler.
Bir kişinin kaba kuvvet saldırısı denemek için API anahtarını kötüye kullanması olasılığını azaltmak amacıyla, 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ı alabilirsiniz.
Projenizin API kotalarını Google Cloud konsolunda değiştirebilirsiniz.
Firebase dışı hizmetler 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 diğer Google Cloud API'leriyle kullandığınız API anahtarlarında bazı ek önlemler almanız gerekir.
Firebase hizmeti / ürünü için olmayan bir Google Cloud API'yi (herhangi bir platformda) kullanıyorsanız bu API'lerle kullanmak üzere ayrı ve kısıtlanmış API anahtarları oluşturmanızı önemle tavsiye ederiz. Bu, API faturalandırılabilir bir Google Cloud hizmeti içinse özellikle ö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 gerektiğinde anahtarları döndürebilir veya değiştirebilir ve Firebase hizmetlerini kullanmanızı kesintiye uğratmadan API anahtarlarına ek kısıtlamalar ekleyebilirsiniz.
API'ye özel anahtar oluşturma talimatlarını görüntüleyin.
Bu talimatlarda, Super Service API adlı sahte bir API için ayrı ve kısıtlanmış bir API anahtarının nasıl oluşturulacağı açıklanmaktadır.
1. adım: Mevcut API anahtarlarınızı Super Service API'e erişime izin vermeyecek şekilde yapılandırın
Google Cloud konsolunun Kimlik bilgileri sayfasını açın. İstendiğinde projenizi seçin.
Listedeki her mevcut 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, 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) dahil etmediğ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 belirtirsiniz. 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 API anahtarı kullanılabilir.
Mevcut API anahtarlarınız artık Super Service API'e erişim izni vermez ancak her anahtar, API kısıtlamaları listesine eklediğiniz API'lerde çalışmaya devam eder.
2. Adım: Super Service API'e erişmek 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 edin ve Anahtarı kısıtla'yı tıklayın.
API kısıtlamaları bölümünde Anahtarı kısıtla'yı seçin ve Super Service API'yi yalnızca listeye ekleyin.
Bu yeni API anahtarı yalnızca Super Service API'e erişim izni verir.
Uygulamanızı ve hizmetlerinizi yeni API anahtarını kullanacak şekilde yapılandırın.
Ortama özgü API anahtarları kullanın (önerilir)
Hazırlık ve üretim gibi farklı ortamlar için farklı Firebase projeleri oluşturursanız her uygulama örneğinin ilgili Firebase projesiyle etkileşim kurması önemlidir. Örneğin, hazırlık aşamasındaki uygulama örneğiniz hiçbir zaman üretim Firebase projenizle iletişime geçmemelidir. Bu aynı zamanda, hazırlık aşamasındaki uygulamanızın hazırlık aşamasındaki Firebase projenizle ilişkili API anahtarlarını kullanması gerektiği anlamına gelir.
Kod değişikliklerini geliştirmeden hazırlık aşamasına ve üretime taşımayla ilgili sorunları azaltmak için API anahtarlarını koda dahil etmek yerine bunları ortam değişkeni 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 amaçlı bir API anahtarı oluşturmanız ve kullanmanız gerektiğini unutmayın. Bu tür bir anahtar oluşturmayla ilgili talimatlar Firebase ML belgelerinde yer alır.
SSS ve sorun giderme
SSS
Firebase hizmetlerinin API anahtarları varsayılan olarak kısıtlanmış
Evet, Firebase'in Firebase ile ilgili API'lerle kullanılmak üzere otomatik olarak temel hazırlığını yaptığı tüm API anahtarlarına varsayılan olarak "API Kısıtlamaları" otomatik olarak uygulanır. Bu izin verilenler listesinde yer alan Firebase ile ilgili API'lerin listesini inceleyin.
Bu izin verilenler listesine eklenen API'ler, Firebase hizmetleri tarafından istemci kodundan çağrılan ve Firebase projenizin veya uygulamanızın tanımlanması için API anahtarlarını gerektiren API'lerdir. 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 gereken API'leri kaldırmamaya çok dikkat etmeniz gerekir (her hizmet / ürün için izin verilenler listesinde olması gereken Firebase ile ilgili API'lerin listesine bakın). Aksi takdirde, Firebase hizmetlerini çağırırken hata alırsınız.
Tüm API anahtarlarınızı ve bunların "API kısıtlamalarını" Google Cloud konsolundaki API'ler ve Hizmetler > Kimlik bilgileri panelinde görüntüleyebilirsiniz.
Firebase'in bu "API kısıtlamalarını" nasıl uyguladığıyla ilgili aşağıdakileri unutmayın:
Mayıs 2024'ten itibaren Firebase tarafından otomatik olarak temel hazırlığı yapılan tüm yeni API anahtarları, Firebase ile ilgili API'lerin listesiyle otomatik olarak kısıtlanır.
Mayıs 2024'te, Firebase'in daha önce otomatik olarak sağladığı tüm mevcut ve sınırsız API anahtarları, Firebase ile ilgili API'lerin listesive projenin etkin API'lerinden herhangi biri ile sınırlandırılacak.
Firebase'in daha önce otomatik olarak temel hazırlığı yaptığı mevcut ve zaten kısıtlanmış API anahtarları değiştirilmedi.
Firebase tarafından otomatik olarak temel hazırlığı yapılmayan mevcut API anahtarları değiştirilmedi.
Firebase uygulamamla ilişkili API anahtarını nasıl öğrenebilirim?
Firebase uygulamanızla ilişkili API anahtarını belirlemek için aşağıdaki seçeneklerden herhangi birini kullanabilirsiniz:
Firebase konsol
settingsProje ayarları'na gidin ve Uygulamalarınız kartına ilerleyin.
İlgilendiğiniz uygulamayı seçin.
İlgili uygulamanın Firebase yapılandırma dosyasını/nesnesini edinin ve ardından API anahtarını bulun:
Apple: GoogleService-Info.plist dosyasını indirin ve API_KEY alanını bulun
Android: google-services.json dosyasını indirin, ilgilendiğiniz uygulamanın yapılandırmasını bulun (paket adını arayın) ve ardından current_key alanını bulun
Web: Yapılandırma seçeneğini belirleyin ve ardından apiKey alanını bulun
Firebase CLI
Aşağıdaki komutu çalıştırarak ilgilendiğiniz uygulamanın Firebase yapılandırma dosyasını/nesnesini edinin:
firebase apps:sdkconfig PLATFORMFIREBASE_APP_ID
PLATFORM (şunlardan biri): IOS | ANDROID | WEB
FIREBASE_APP_ID: Firebase uygulamanız için Firebase tarafından atanan benzersiz tanımlayıcı (uygulama kimliğinizi bulma)
Uygulamanın basılı Firebase yapılandırmasında API anahtarını bulun:
Apple: API_KEY alanını bulma
Android: İlgili 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
İlgili uygulama için geçerli uç noktayı çağırarak ve ardından apiKeyId değerini bir sonraki adıma ileterek API anahtarının apiKeyId (UID) değerini alın.
Firebase yapılandırma dosyamda/nesnemde aynı Firebase uygulaması için iki API anahtarı listeleyebilir miyim?
Firebase Apple Uygulamaları: 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 uygulamada yalnızca bir API anahtarı listelenir. Ancak 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 API anahtarı sayısı bir ile sınırlıdır.
Ancak tek bir uygulamada birden fazla API anahtarı kullanabilir. Uygulamanızın bu diğer API anahtarlarına erişmesi için bir mekanizma (ör. ortam değişkeni) sağlamanız gerekir. Diğer API anahtarlarına erişim mekanizması, bu API anahtarlarının Firebase yapılandırma dosyanızda/nesnenize listelenmesine bağlı olamaz.
Firebase, bir uygulamayla eşleştirilecek API anahtarını nasıl bilir (ör. Firebase yapılandırma dosyasında/nesnesinde)?
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 key ve web uygulamaları için Browser key değerini listeler (bu anahtarların mevcut olduğu ve ilgili uygulamayla eşleşmelerini engelleyen "uygulama kısıtlamaları" olmadığı 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 tüm çağrılar başarısız olur.
Firebase yapılandırma dosyamı/nesnemi farklı API anahtarlarıyla manuel olarak düzenleyebilir miyim?
Evet, farklı bir API anahtarını bir uygulamayla ilişkilendirmek için yapılandırma dosyasını/nesnesini manuel olarak düzenleyebilirsiniz.
Bir API anahtarını bir Firebase projesinden diğerine taşıyabilir miyim?
Hayır, API anahtarları yalnızca belirli bir projeyi tanımlar ve başka bir projeye taşınamaz.
Google Cloud konsolunda listelenen bir API anahtarını silersem ne olur?
Bir uygulama tarafından kullanılan bir API anahtarını silerseniz söz konusu 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ı silme işlemi kalıcı olup geri alınamaz.
Firebase API anahtarının "API kısıtlamaları" izin verilenler listesinde hangi API'lerin bulunması gerekir?
Firebase API anahtarının "API kısıtlamaları" izin verilenler listesinde olması gereken tek API, istemcinin çağrıyla birlikte bir API anahtarı sağlamasını gerektiren API'lerdir. Firebase ile ilgili API'lerin çok azında bu şartın olduğunu unutmayın. Projenizde etkinleştirilen Firebase ile ilgili API'lerin çoğunun, anahtarın "API kısıtlamaları" izin verilenler listesinde olması gerekmez.
Bir Firebase API anahtarının "API kısıtlamaları" izin verilenler listesine hangi Firebase API'lerinin dahil edilmesi gerektiğini belirlemek için aşağıdaki tabloyu kullanın. Firebase API anahtarlarının yalnızca Firebase hizmetleri için kullanılabileceğini unutmayın. Belirli API türleri için ayrı, kısıtlanmış API anahtarları oluşturma hakkında daha fazla bilgi edinin.
* Yalnızca Firebase API anahtarını üçüncü taraf araçlarıyla veya Firebase hizmetine / ürüne doğrudan REST erişimi ile kullanıyorsanız gereklidir.
** Ü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 API_KEY_SERVICE_BLOCKED veya Forbidden 403 hatasını nasıl düzeltebilirim?
API_KEY_SERVICE_BLOCKEDhatası veya aşağıdakine benzeyen bir hata alıyorsanız bu SSS'deki talimatları 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 muhtemelen "API Kısıtlamaları" uygulanmıştır ve anahtarın izin verilenler listesinde bu API yer almıyordur.
Firebase dışındaki bir hizmeti kullanmaya çalışırken bu hatayla karşılaşı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 getirilemedi."
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.
API anahtarımın geçersiz olduğuna dair bir e-posta veya hata aldım. Ne oldu ve bu sorunu nasıl düzeltebilirim?
Geçersiz API anahtarlarının en yaygın nedenlerinden bazıları şunlardır:
API anahtarına, anahtarı kullanmaya çalışan uygulamayla eşleşmesini engelleyen "API Anahtarı Kısıtlamaları" veya çağrılan API için kullanılamaz hale getiren ("API Kısıtlamaları") "Uygulama Kısıtlamaları" uygulanmıştır.
API anahtarı, Google Cloud konsolundaki projeden silindi.
API anahtarı, uygulamanın Firebase yapılandırma dosyasında/nesnesinde listelenen proje kimliği için oluşturulmamıştır.