GitHub kimlik doğrulamasını uygulamanıza entegre ederek kullanıcılarınızın GitHub hesaplarını kullanarak Firebase ile kimlik doğrulaması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 elde edilen erişim jetonunu Firebase'e aktararak entegre edebilirsiniz.
Başlamadan önce
- Firebase'i JavaScript projenize ekleyin.
- Firebase konsolunda Auth bölümünü açın.
- Oturum açma yöntemi sekmesinde GitHub sağlayıcısını etkinleştirin.
- İlgili sağlayıcının geliştirici konsolundaki istemci kimliğini ve istemci gizli anahtarını sağlayıcı yapılandırmasına ekleyin:
- GitHub'da geliştirici uygulaması olarak uygulamanızı kaydedin ve uygulamanızın OAuth 2.0 istemci kimliğini ve istemci gizli anahtarını alın.
- Firebase OAuth yönlendirme URI'nizin (ör.
my-app-12345.firebaseapp.com/__/auth/handler
), GitHub uygulamanızın yapılandırmasındaki uygulamanızın ayarlar sayfasında Yetkilendirme geri çağırma URL'niz olarak ayarlandığından emin olun.
- Kaydet'i tıklayın.
Oturum açma akışını Firebase SDK'sıyla yönetme
Web uygulaması geliştiriyorsanız kullanıcılarınızın GitHub hesaplarını kullanarak Firebase ile kimliklerini 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:
- GitHub sağlayıcı nesnesi örneği oluşturun:
Web
import { GithubAuthProvider } from "firebase/auth"; const provider = new GithubAuthProvider();
Web
var provider = new firebase.auth.GithubAuthProvider();
- İ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('repo');
Web
provider.addScope('repo');
- İ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({ 'allow_signup': 'false' });
Web
provider.setCustomParameters({ 'allow_signup': 'false' });
- GitHub sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulama Kullanıcılarınızın GitHub 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, 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; // ... });
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);
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; // ... });
- Pop-up pencereyle oturum açmak için
Oturum açma akışını manuel olarak yönetme
GitHub OAuth 2.0 uç noktalarını çağırarak oturum açma akışını yöneterek GitHub hesabı kullanarak Firebase ile kimlik doğrulaması da yapabilirsiniz:
- Geliştirici dokümanlarını izleyerek 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.
- Bir Node.js uygulamasında oturum açmanız gerekiyorsa OAuth erişim jetonunu Node.js uygulamasına gönderin.
- Kullanıcı GitHub ile başarılı bir şekilde oturum açtı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);
- Firebase kimlik bilgisini kullanarak Firebase ile 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 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 bilgileriniUser
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. });