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 ile kimlik doğrulaması yapmasını sağlayabilirsiniz. Oturum açma akışını yürütmek için Firebase SDK'sını kullanarak veya GitHub OAuth 2.0 akışını manuel olarak gerçekleştirip elde edilen erişim jetonunu Firebase'e ileterek GitHub kimlik doğrulamasını entegre edebilirsiniz.

Başlamadan önce

  1. Firebase'i JavaScript projenize ekleyin.
  2. Firebase konsolunda Auth bölümünü açın.
  3. Oturum açma yöntemi sekmesinde, GitHub sağlayıcısını etkinleştirin.
  4. Söz konusu sağlayıcının geliştirici konsolundan İstemci Kimliği ve İstemci Gizli Anahtarı'nı sağlayıcı yapılandırmasına ekleyin:
    1. GitHub'da bir geliştirici uygulaması olarak uygulamanızı kaydedin ve uygulamanızın OAuth 2.0 İstemci Kimliği ile İstemci Sırrı'nı alın.
    2. GitHub uygulamanızın yapılandırmasında uygulamanızın ayarlar sayfasında Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler) Yetkilendirme geri çağırma URL'niz olarak ayarlandığından emin olun.
  5. Kaydet'i tıklayın.

Oturum açma akışını Firebase SDK'sı ile yönetme

Web uygulaması oluşturuyorsanız GitHub hesaplarını kullanarak Firebase ile kullanıcılarınızın 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 bir kullanıcının kimliğini doğrulamak istiyorsanız oturum açma akışını manuel olarak yürütmeniz gerekir.)

Oturum açma akışını Firebase JavaScript SDK ile yönetmek için aşağıdaki adımları izleyin:

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

    Web modüler API

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

    Web ad alanı API'si

    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 yöntemini çağırın. Örnek:

    Web modüler API

    provider.addScope('repo');

    Web ad alanı API'si

    provider.addScope('repo');
    Kimlik doğrulama sağlayıcı belgelerine bakın.
  3. İ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, başlatılan sağlayıcıda setCustomParameters yöntemini, OAuth sağlayıcı belgelerinde belirtildiği gibi anahtarı ve ilgili değeri içeren bir nesne ile çağırın. Örnek:

    Web modüler API

    provider.setCustomParameters({
      'allow_signup': 'false'
    });

    Web ad alanı API'si

    provider.setCustomParameters({
      'allow_signup': 'false'
    });
    Ayrılmış zorunlu OAuth parametrelerine izin verilmez ve bu parametreler yoksayılır. Daha fazla bilgi için kimlik doğrulama sağlayıcı referansı bölümüne bakın.
  4. GitHub sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulayın. Kullanıcılarınızdan bir pop-up pencere açarak veya oturum açma sayfasına yönlendirerek GitHub hesaplarıyla oturum açmalarını isteyebilirsiniz. Mobil cihazlarda yönlendirme yöntemi tercih edilir.
    • Pop-up pencereyle oturum açmak için signInWithPopup numaralı telefonu arayın:

      Web modüler API

      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 ad alanı API'si

      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'lerini kullanarak ek veriler getirmek için kullanılabilen GitHub sağlayıcısının OAuth jetonunu alabilirsiniz.

      Ayrıca, hataları yakalayıp işleyebilirsiniz. Hata kodlarının listesi için Kimlik Doğrulama Referans Belgeleri'ne göz atın.

    • Oturum açma sayfasına yönlendirerek oturum açmak için signInWithRedirect numaralı telefonu arayın: "signInWithRedirect" özelliğini kullanırken en iyi uygulamaları izleyin.

      Web modüler API

      import { getAuth, signInWithRedirect } from "firebase/auth";
      
      const auth = getAuth();
      signInWithRedirect(auth, provider);

      Web ad alanı API'si

      firebase.auth().signInWithRedirect(provider);
      Ardından, sayfanız yüklendiğinde getRedirectResult yöntemini çağırarak GitHub sağlayıcısının OAuth jetonunu da alabilirsiniz:

      Web modüler API

      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 ad alanı API'si

      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;
          // ...
        });
      Ayrıca, hataları yakalayıp işleyebilirsiniz. Hata kodlarının listesi için Kimlik Doğrulama Referans Belgeleri'ne göz atın.

Oturum açma akışını manuel olarak yönetme

Ayrıca, bir GitHub hesabı kullanarak GitHub OAuth 2.0 uç noktalarını çağırarak oturum açma akışını yöneterek Firebase ile kimlik doğrulaması yapabilirsiniz:

  1. Geliştirici belgelerindeki adımları uygulayarak 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. Bir kullanıcı GitHub ile başarıyla oturum açtıktan sonra OAuth 2.0 erişim jetonunu bir Firebase kimlik bilgisi ile değiştirin:

    Web modüler API

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

    Web ad alanı API'si

    var credential = firebase.auth.GithubAuthProvider.credential(token);
  4. Firebase kimlik bilgilerini kullanarak Firebase ile kimlik doğrulayın:

    Web modüler API

    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 ad alanı API'si

    // 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ılarında Firebase ile kimlik doğrulama

Bir Chrome uzantı uygulaması oluşturuyorsanız Dokümanlar Dışı Dokümanlar 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ı bilgisi) bağlanır. Bu yeni hesap Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığından bağımsız olarak projenizdeki her uygulamada kullanıcıyı tanımlamak için kullanılabilir.

  • Uygulamalarınızda, kullanıcınızın kimlik doğrulama durumunu öğrenmek için önerilen yol, Auth nesnesinde bir gözlemci ayarlamaktır. Daha sonra, kullanıcının temel profil bilgilerini User nesnesinden alabilirsiniz. Kullanıcıları Yönetme sayfasına göz atın.

  • Firebase Realtime Database ve Cloud Storage Güvenlik Kurallarınızda, oturum açan 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, birden fazla kimlik doğrulama sağlayıcı kullanarak uygulamanızda oturum açmasına izin verebilirsiniz.

Bir kullanıcının oturumunu kapatmak için signOut numaralı telefonu arayın:

Web modüler API

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web ad alanı API'si

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});