JavaScript ile Google'ı Kullanarak Kimlik Doğrula

Kullanıcılarınızın Google Hesaplarını kullanarak Firebase ile kimlik doğrulamasına izin verebilirsiniz. Google ile oturum açma akışını gerçekleştirmek için Firebase SDK'sını kullanabilir veya Google ile oturum açma kitaplığını kullanarak oturum açma akışını manuel olarak gerçekleştirebilir ve elde edilen kimlik jetonunu Firebase'e iletebilirsiniz.

Başlamadan önce

  1. Firebase'i JavaScript projenize ekleyin.
  2. Firebase konsolunda oturum açma yöntemi olarak Google'ı etkinleştirin:
    1. Firebase konsolunda Auth bölümünü açın.
    2. 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'sı ile yönetme

Web uygulaması geliştiriyorsanız kullanıcılarınızın Google Hesaplarını kullanarak Firebase ile kimlik doğrulamanın en kolay yolu, oturum açma akışını Firebase JavaScript SDK'sıyla yönetmek olacaktır. (Node.js veya tarayıcı dışındaki başka bir ortamda bir kullanıcının kimliğini doğrulamak istiyorsanız oturum açma akışını manuel olarak yönetmeniz gerekir.)

Oturum açma akışını Firebase JavaScript SDK'sıyla işlemek için aşağıdaki adımları uygulayın:

  1. Google sağlayıcı nesnesi örneği oluşturun:

    Web

    import { GoogleAuthProvider } from "firebase/auth";
    
    const provider = new GoogleAuthProvider();

    Web

    var provider = new firebase.auth.GoogleAuthProvider();
  2. İsteğe bağlı: Kimlik doğrulama sağlayıcıdan 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('https://www.googleapis.com/auth/contacts.readonly');

    Web

    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
    Kimlik doğrulama sağlayıcı belgelerini inceleyin.
  3. İ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();
  4. İ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ı dokümanlarında belirtildiği şekilde anahtarı ve ilgili değeri içeren bir nesneyle başlatılmış sağlayıcıda setCustomParameters işlevini çağırın. Örneğin:

    Web

    provider.setCustomParameters({
      'login_hint': '[email protected]'
    });

    Web

    provider.setCustomParameters({
      'login_hint': '[email protected]'
    });
    Ayrılmış gerekli OAuth parametrelerine izin verilmez ve bu parametreler yoksayılır. Daha fazla bilgi için kimlik doğrulama sağlayıcı referansına bakın.
  5. Google sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulama Kullanıcılarınızın Google Hesaplarıyla oturum açmasını isteyebilirsiniz. Bunun için pop-up pencere açabilir veya oturum açma sayfasına yönlendirebilirsiniz. Yönlendirme yöntemi, mobil cihazlarda tercih edilir.
    • Pop-up pencereyle oturum açmak için signInWithPopup'ü arayın:

      Web

      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

      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;
          // ...
        });
      Ayrıca, Google sağlayıcının OAuth jetonunu da alabilirsiniz. Bu jeton, Google API'lerini kullanarak ek veri almak için kullanılabilir.

      Hataları yakalayıp buradan da yönetebilirsiniz. Hata kodlarının listesi için Auth Referans Dokümanları'na göz atın.

    • Oturum açma sayfasına yönlendirerek oturum açmak için signInWithRedirect işlevini çağırı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);
      Ardından, sayfanız yüklendiğinde getRedirectResult işlevini çağırarak Google sağlayıcının OAuth jetonunu da alabilirsiniz:

      Web

      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

      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;
          // ...
        });
      Hataları yakalayıp buradan da yönetebilirsiniz. Hata kodlarının listesi için Auth Referans Dokümanları'na göz atın.

Chrome uzantısında Firebase ile kimlik doğrulama

Chrome uzantısı uygulaması geliştiriyorsanız Ekran Dışı Dokümanlar kılavuzuna göz atın.

Sonraki adımlar

Kullanıcı ilk kez oturum açtıktan sonra yeni bir kullanıcı hesabı oluşturulur ve kullanıcının oturum açarken kullandığı kimlik bilgilerine (yani 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 nesnesine bir gözlemci ayarlamaktır. Ardından, kullanıcının temel profil bilgilerini User nesnesinden 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 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:

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.
});