Kullanıcılarınızın Google Hesaplarını kullanarak Firebase ile kimlik doğrulamasına izin verebilirsiniz. Google oturum açma akışını gerçekleştirmek için Firebase SDK'yı kullanabilir veya Google ile Oturum Açma kitaplığını kullanarak oturum açma akışını manuel olarak gerçekleştirebilir ve elde edilen kimlik belirtecini Firebase'e iletebilirsiniz.
Sen başlamadan önce
- Firebase'i JavaScript projenize ekleyin .
- Firebase konsolunda oturum açma yöntemi olarak Google'ı etkinleştirin:
- Firebase konsolunda Kimlik Doğrulama bölümünü açın.
- Oturum açma yöntemi sekmesinde Google oturum açma yöntemini etkinleştirin ve Kaydet'i tıklayın.
Oturum açma akışını Firebase SDK ile yönetin
Bir web uygulaması oluşturuyorsanız Google Hesaplarını kullanarak kullanıcılarınızın Firebase ile kimliklerini doğrulamanın en kolay yolu, oturum açma akışını Firebase JavaScript SDK'sıyla yönetmektir. (Node.js'de veya tarayıcı olmayan başka bir ortamda bir kullanıcının kimliğini doğrulamak istiyorsanız oturum açma akışını manuel olarak gerçekleştirmelisiniz.)
Firebase JavaScript SDK'sıyla oturum açma akışını yönetmek için şu adımları izleyin:
- Google sağlayıcı nesnesinin bir örneğini oluşturun:
Web modular API
import { GoogleAuthProvider } from "firebase/auth"; const provider = new GoogleAuthProvider();
Web namespaced API
var provider = new firebase.auth.GoogleAuthProvider();
- İsteğe bağlı : Kimlik doğrulama sağlayıcısından istemek istediğiniz ek OAuth 2.0 kapsamlarını belirtin. Kapsam eklemek için
addScope
çağırın. Örneğin:Kimlik doğrulama sağlayıcısının belgelerine bakın.Web modular API
provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
Web namespaced API
provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
- İsteğe bağlı : Sağlayıcının OAuth akışını, ilgili özel OAuth parametrelerini açıkça iletmeden kullanıcının tercih ettiği dile yerelleştirmek için OAuth akışını başlatmadan önce Auth örneğindeki dil kodunu güncelleyin. Örneğin:
Web modular API
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Web namespaced API
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
- İsteğe bağlı : OAuth isteğiyle birlikte göndermek istediğiniz ek özel OAuth sağlayıcı parametrelerini belirtin. Özel bir parametre eklemek için, OAuth sağlayıcı belgelerinde belirtilen anahtarı ve karşılık gelen değeri içeren bir nesneyle, başlatılan sağlayıcıda
setCustomParameters
çağırın. Örneğin:Ayrılmış gerekli OAuth parametrelerine izin verilmiyor ve göz ardı edilecek. Daha fazla ayrıntı için kimlik doğrulama sağlayıcısının referansına bakın.Web modular API
provider.setCustomParameters({ 'login_hint': 'user@example.com' });
Web namespaced API
provider.setCustomParameters({ 'login_hint': 'user@example.com' });
- Google sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulaması yapın. Bir açılır pencere açarak veya oturum açma sayfasına yönlendirerek kullanıcılarınızdan Google Hesaplarıyla oturum açmalarını isteyebilirsiniz. Mobil cihazlarda yönlendirme yöntemi tercih edilmektedir.
- Açılır pencereyle oturum açmak için
signInWithPopup
çağırın:Ayrıca, Google API'lerini kullanarak ek veriler almak için kullanılabilecek Google sağlayıcısının OAuth jetonunu alabileceğinizi de unutmayın.Web modular API
import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // This gives you a Google Access Token. You can use it to access the Google API. const credential = GoogleAuthProvider.credentialFromResult(result); const token = credential.accessToken; // The signed-in user info. const user = result.user; // IdP data available using getAdditionalUserInfo(result) // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const credential = GoogleAuthProvider.credentialFromError(error); // ... });
Web namespaced API
firebase.auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. You can use it to access the Google API. var token = credential.accessToken; // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... }).catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. var credential = error.credential; // ... });
Burası aynı zamanda hataları yakalayıp yönetebileceğiniz yerdir. Hata kodlarının bir listesi için Yetkilendirme Referans Dokümanlarına bakın.
- Oturum açma sayfasına yönlendirerek oturum açmak için
signInWithRedirect
çağırın: 'signInWithRedirect'i kullanırken en iyi uygulamaları izleyin.Ardından, sayfanız yüklendiğindeWeb modular API
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web namespaced API
firebase.auth().signInWithRedirect(provider);
getRedirectResult
çağırarak Google sağlayıcısının OAuth jetonunu da alabilirsiniz:Burası aynı zamanda hataları yakalayıp yönetebileceğiniz yerdir. Hata kodlarının bir listesi için Yetkilendirme Referans Dokümanlarına bakın.Web modular API
import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // This gives you a Google Access Token. You can use it to access Google APIs. const credential = GoogleAuthProvider.credentialFromResult(result); const token = credential.accessToken; // The signed-in user info. const user = result.user; // IdP data available using getAdditionalUserInfo(result) // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const credential = GoogleAuthProvider.credentialFromError(error); // ... });
Web namespaced API
firebase.auth() .getRedirectResult() .then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. You can use it to access the Google API. var token = credential.accessToken; // ... } // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... }).catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. var credential = error.credential; // ... });
- Açılır pencereyle oturum açmak için
Chrome uzantısında Firebase ile kimlik doğrulama
Bir Chrome uzantısı uygulaması oluşturuyorsanız Chrome uzantı kimliğinizi eklemeniz gerekir:
- Projenizi Firebase konsolunda açın.
- Kimlik Doğrulama bölümünde Oturum açma yöntemi sayfasını açın.
- Yetkili Etki Alanları listesine aşağıdakine benzer bir URI ekleyin:
chrome-extension://CHROME_EXTENSION_ID
Chrome uzantıları HTTP yönlendirmelerini kullanamadığından Chrome uzantıları için yalnızca açılır pencere işlemleri ( signInWithPopup
, linkWithPopup
ve reauthenticateWithPopup
) kullanılabilir. Kimlik doğrulama açılır penceresi tarayıcı eylemi açılır penceresini iptal edeceğinden, bu yöntemleri bir tarayıcı eylemi açılır penceresi yerine bir arka plan sayfası komut dosyasından çağırmalısınız. Açılan yöntemler yalnızca Manifest V2 kullanan uzantılarda kullanılabilir. Daha yeni olan Manifest V3, yalnızca açılır pencere işlemlerini hiçbir şekilde gerçekleştiremeyen hizmet çalışanları biçimindeki arka plan komut dosyalarına izin verir.
Chrome uzantınızın manifest dosyasında https://apis.google.com
URL'sini content_security_policy
izin verilenler listesine eklediğinizden emin olun.
Sonraki adımlar
Bir kullanıcı ilk kez oturum açtıktan sonra, yeni bir kullanıcı hesabı oluşturulur ve oturum açan kullanıcının kimlik bilgileriyle (yani kullanıcı adı ve parolası, telefon numarası veya kimlik doğrulama sağlayıcı bilgileri) ilişkilendirilir. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığına bakılmaksızın projenizdeki her uygulamada bir kullanıcıyı tanımlamak için kullanılabilir.
Uygulamalarınızda kullanıcınızın kimlik doğrulama durumunu öğrenmenin önerilen yolu,
Auth
Doğrulama nesnesine bir gözlemci ayarlamaktır. Daha sonra kullanıcının temel profil bilgileriniUser
nesnesinden alabilirsiniz. Bkz . Kullanıcıları Yönetme .Firebase Gerçek Zamanlı Veritabanı ve Bulut Depolama Güvenliği Kurallarınızda , oturum açan kullanıcının benzersiz kullanıcı kimliğini
auth
değişkeninden alabilir ve bunu, kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.
Bir kullanıcının oturumunu kapatmak için signOut
arayın:
Web modular API
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web namespaced API
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });