Facebook Girişi'ni uygulamanıza entegre ederek kullanıcılarınızın Facebook hesaplarını kullanarak Firebase'de kimlik doğrulaması yapmasına izin verebilirsiniz. Facebook Girişi'ni, oturum açma akışını gerçekleştirmek için Firebase SDK'sını kullanarak veya Facebook Girişi akışını manuel olarak gerçekleştirip sonuçta elde edilen erişim jetonunu Firebase'e ileterek entegre edebilirsiniz.
Başlamadan önce
- Firebase'i JavaScript projenize ekleyin.
- Facebook for Developers sitesinde uygulamanız için Uygulama Kimliği ve Uygulama Gizli Anahtarı'nı alın.
- Facebook ile Giriş'i etkinleştirme:
- Firebase konsolunda Kimlik Doğrulama bölümünü açın.
- Oturum açma yöntemi sekmesinde Facebook oturum açma yöntemini etkinleştirin ve Facebook'tan aldığınız Uygulama Kimliği ile Uygulama Gizli Anahtarı'nı belirtin.
- Ardından, OAuth yönlendirme URI'nizin (ör.
my-app-12345.firebaseapp.com/__/auth/handler
) Ürün Ayarları > Facebook ile Giriş yapılandırmasında, Facebook for Developers sitesindeki Facebook uygulamanızın ayarlar sayfasında OAuth yönlendirme URI'lerinizden biri olarak listelendiğinden emin olun.
Firebase SDK ile oturum açma akışını yönetme
Web uygulaması geliştiriyorsanız kullanıcılarınızın Facebook hesaplarını kullanarak Firebase ile kimliklerini doğrulamanın en kolay yolu, oturum açma akışını Firebase JavaScript SDK ile yönetmektir. (Node.js veya tarayıcı dışı başka bir ortamda kullanıcı kimliğini doğrulamak istiyorsanız oturum açma akışını manuel olarak yönetmeniz gerekir.)
Firebase JavaScript SDK ile oturum açma akışını işlemek için aşağıdaki adımları uygulayın:
- Facebook sağlayıcı nesnesinin bir örneğini oluşturun:
Web
import { FacebookAuthProvider } from "firebase/auth"; const provider = new FacebookAuthProvider();
Web
var provider = new firebase.auth.FacebookAuthProvider();
- İ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
işlevini çağırın. Örneğin:Web
provider.addScope('user_birthday');
Web
provider.addScope('user_birthday');
- İsteğe bağlı: İlgili özel OAuth parametrelerini açıkça iletmeden sağlayıcının OAuth akışını 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
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
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 parametre eklemek için, OAuth sağlayıcı belgelerinde belirtildiği şekilde anahtarı ve karşılık gelen değeri içeren bir nesneyle başlatılan sağlayıcıda
setCustomParameters
işlevini çağırın. Örneğin:Web
provider.setCustomParameters({ 'display': 'popup' });
Web
provider.setCustomParameters({ 'display': 'popup' });
- Facebook sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulama. Kullanıcılarınızdan, pop-up pencere açarak veya oturum açma sayfasına yönlendirerek Facebook hesaplarıyla oturum açmalarını isteyebilirsiniz. Yönlendirme yöntemi mobil cihazlarda tercih edilir.
- Pop-up pencereyle oturum açmak için
signInWithPopup
işlevini çağırın:Web
import { getAuth, signInWithPopup, FacebookAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // The signed-in user info. const user = result.user; // This gives you a Facebook Access Token. You can use it to access the Facebook API. const credential = FacebookAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; // 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 = FacebookAuthProvider.credentialFromError(error); // ... });
Web
firebase .auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... // This gives you a Facebook Access Token. You can use it to access the Facebook API. var accessToken = credential.accessToken; // ... }) .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; // ... });
Hataları yakalayıp işleyebileceğiniz yer de burasıdır. Hata kodlarının listesi için Auth Reference Docs'a göz atın.
- Oturum açma sayfasına yönlendirerek oturum açmak için
signInWithRedirect
çağrısı yapın: `signInWithRedirect` işlevini kullanırken en iyi uygulamalara uyun.Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResult
işlevini çağırarak Facebook sağlayıcının OAuth jetonunu da alabilirsiniz:Web
import { getAuth, getRedirectResult, FacebookAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // This gives you a Facebook Access Token. You can use it to access the Facebook API. const credential = FacebookAuthProvider.credentialFromResult(result); const token = credential.accessToken; 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; // AuthCredential type that was used. const credential = FacebookAuthProvider.credentialFromError(error); // ... });
Web
firebase.auth() .getRedirectResult() .then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Facebook Access Token. You can use it to access the Facebook 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; // ... });
- Pop-up pencereyle oturum açmak için
Chrome uzantısında Firebase ile kimlik doğrulama
Chrome uzantısı uygulaması geliştiriyorsanız Offscreen Documents rehberine bakın.
Sonraki adımlar
Bir kullanıcı ilk kez oturum açtıktan sonra yeni bir kullanıcı hesabı oluşturulur ve kullanıcının oturum açtığı kimlik bilgilerine (kullanıcı adı ve şifre, telefon numarası veya kimlik doğrulama sağlayıcı bilgileri) bağlanır. 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 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
nesnesinde bir gözlemci ayarlamaktır. Ardından,User
nesnesinden kullanıcının temel profil bilgilerini alabilirsiniz. Kullanıcıları yönetme başlıklı makaleyi inceleyin. Firebase Realtime Database ve Cloud Storage Güvenlik Kurallarınızda, oturum açmış kullanıcının benzersiz kullanıcı kimliğini
auth
değişkeninden alabilir ve kullanıcının hangi verilere erişebileceğini kontrol etmek için bu kimliği kullanabilirsiniz.
Kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak kullanıcıların uygulamanızda birden fazla kimlik doğrulama sağlayıcı kullanarak oturum açmasına izin verebilirsiniz.
Bir kullanıcının oturumunu kapatmak için
signOut
numaralı telefonu arayın:
Web
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });