GitHub'ı JavaScript ile Kullanarak Kimlik Doğrulama

GitHub kimlik doğrulamasını uygulamanıza entegre ederek kullanıcılarınızın GitHub hesaplarını kullanarak Firebase'de kimlik doğrulaması yapmasına izin verebilirsiniz. GitHub kimlik doğrulamasını, oturum açma akışını gerçekleştirmek için Firebase SDK'sını kullanarak veya GitHub OAuth 2.0 akışını manuel olarak gerçekleştirip sonuçta elde edilen erişim jetonunu Firebase'e ileterek entegre edebilirsiniz.

Başlamadan önce

  1. Firebase'i JavaScript projenize ekleyin.
  2. Firebase konsolunda Güvenlik > Kimlik doğrulama'ya gidin.
  3. Oturum açma yöntemi sekmesinde GitHub oturum açma sağlayıcısını etkinleştirin.
  4. İlgili sağlayıcının geliştirici konsolundan istemci kimliğini ve istemci gizli anahtarını sağlayıcı yapılandırmasına ekleyin:
    1. Uygulamanızı GitHub'da geliştirici uygulaması olarak kaydedin ve uygulamanızın OAuth 2.0 istemci kimliğini ve istemci gizli anahtarını alın.
    2. Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler), GitHub uygulamanızın yapılandırmasındaki uygulama ayarları sayfanızda yetkilendirme geri çağırma URL'si olarak ayarlandığından emin olun.
  5. Kaydet'i tıklayın.

Oturum açma akışını Firebase SDK ile işleme

Web uygulaması geliştiriyorsanız kullanıcılarınızın kimliklerini GitHub hesaplarını kullanarak Firebase ile 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:

  1. GitHub sağlayıcı nesnesinin bir örneğini oluşturun:

    Web

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

    Web

    var provider = new firebase.auth.GithubAuthProvider();
  2. İ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('repo');

    Web

    provider.addScope('repo');
    Kimlik doğrulama sağlayıcı belgelerine bakın.
  3. İsteğe bağlı: OAuth isteğiyle 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({
      'allow_signup': 'false'
    });

    Web

    provider.setCustomParameters({
      'allow_signup': 'false'
    });
    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.
  4. GitHub sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulayın. Kullanıcılarınızdan, pop-up pencere açarak veya oturum açma sayfasına yönlendirerek GitHub 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, GithubAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // This gives you a GitHub Access Token. You can use it to access the GitHub API.
          const credential = GithubAuthProvider.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 = GithubAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // This gives you a GitHub Access Token. You can use it to access the GitHub 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, GitHub API'leri kullanılarak ek verilerin getirilmesinde kullanılabilecek GitHub sağlayıcısının OAuth jetonunu da alabileceğinizi unutmayın.

      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` 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 GitHub sağlayıcısının OAuth jetonunu da alabilirsiniz:

      Web

      import { getAuth, getRedirectResult, GithubAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          const credential = GithubAuthProvider.credentialFromResult(result);
          if (credential) {
            // This gives you a GitHub Access Token. You can use it to access the GitHub API.
            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 = GithubAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase.auth()
        .getRedirectResult()
        .then((result) => {
          if (result.credential) {
            /** @type {firebase.auth.OAuthCredential} */
            var credential = result.credential;
      
            // This gives you a GitHub Access Token. You can use it to access the GitHub 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 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 akışını manuel olarak işleme

GitHub OAuth 2.0 uç noktalarını çağırarak oturum açma akışını işleyip GitHub hesabı kullanarak Firebase'de kimlik doğrulaması da yapabilirsiniz:

  1. Geliştirici dokümanlarını inceleyerek GitHub kimlik doğrulamasını uygulamanıza entegre edin. GitHub oturum açma akışının sonunda bir OAuth 2.0 erişim jetonu alırsınız.
  2. Bir Node.js uygulamasında oturum açmanız gerekiyorsa OAuth erişim jetonunu Node.js uygulamasına gönderin.
  3. Kullanıcı GitHub ile başarılı bir şekilde giriş yaptıktan sonra OAuth 2.0 erişim jetonunu Firebase kimlik bilgisiyle değiştirin:

    Web

    import { GithubAuthProvider } from "firebase/auth";
    
    const credential = GithubAuthProvider.credential(token);

    Web

    var credential = firebase.auth.GithubAuthProvider.credential(token);
  4. Firebase kimlik bilgisiyle Firebase'de kimlik doğrulama:

    Web

    import { getAuth, signInWithCredential } from "firebase/auth";
    
    // Sign in with the credential from the user.
    const auth = getAuth();
    signInWithCredential(auth, credential)
      .then((result) => {
        // Signed in 
        // ...
      })
      .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;
        // ...
      });

    Web

    // Sign in with the credential from the user.
    firebase.auth()
      .signInWithCredential(credential)
      .then((result) => {
        // Signed in 
        // ...
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
        // The email of the user's account used.
        const email = error.email;
        // ...
      });

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