āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϏāĻāĻšāϤ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϤāĻžāĻĻā§āϰ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase-āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻĒāύāĻŋ āϏāĻžāĻāύ-āĻāύ āĻĢā§āϞ⧠āĻāĻžāϞāĻžāϤ⧠Firebase SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āĻĨāĻŦāĻž āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ GitHub OAuth 2.0 āĻĢā§āϞ⧠āĻāĻžāϞāĻŋāϝāĻŧā§ āĻāĻŦāĻ āĻĢāϞ⧠āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ Firebase-āĻ āĻĒāĻžāϏ āĻāϰ⧠GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖāĻā§ āĻāĻā§āĻā§āϤ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§
- āĻāĻĒāύāĻžāϰ JavaScript āĻĒā§āϰāĻāϞā§āĻĒā§ Firebase āϝā§āĻ āĻāϰā§āύ āĨ¤
- Firebase āĻāύāϏā§āϞ⧠, Auth āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύāĨ¤
- āϏāĻžāĻāύ āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻā§āϝāĻžāĻŦā§, GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āϏāĻā§āώāĻŽ āĻāϰā§āύāĨ¤
- āϏā§āĻ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻāύāϏā§āϞ āĻĨā§āĻā§ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏāĻŋāĻā§āϰā§āĻ āϝā§āĻ āĻāϰā§āύ:
- GitHub-āĻ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻšāĻŋāϏā§āĻŦā§ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āύāĻŋāĻŦāύā§āϧāύ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ OAuth 2.0 āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏāĻŋāĻā§āϰā§āĻ āĻĒāĻžāύāĨ¤
- āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āϝ⧠āĻāĻĒāύāĻžāϰ Firebase OAuth āϰāĻŋāĻĄāĻžāĻāϰā§āĻā§āĻ URI (āϝā§āĻŽāύ
my-app-12345.firebaseapp.com/__/auth/handler
) āĻāĻĒāύāĻžāϰ GitHub āĻ ā§āϝāĻžāĻĒā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āϏā§āĻāĻŋāĻāϏ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻāĻĒāύāĻžāϰ āĻ āύā§āĻŽā§āĻĻāύ āĻāϞāĻŦā§āϝāĻžāĻ URL āĻšāĻŋāϏā§āĻŦā§ āϏā§āĻ āĻāϰāĻž āĻāĻā§āĨ¤
- āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻā§āϞāĻŋāĻ āĻāϰā§āύ.
Firebase SDK āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ-āĻāύ āĻĢā§āϞ⧠āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻāϝāĻŧā§āĻŦ āĻ ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāĻžāϰ āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻšāĻ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ Firebase JavaScript SDK-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻžāĨ¤ (āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ Node.js āĻŦāĻž āĻ āύā§āϝ āĻ -āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻšāĻāĻŋ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤)
Firebase JavaScript SDK āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤā§, āĻāĻ āϧāĻžāĻĒāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύ:
- GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻŦāϏā§āϤā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āϤā§āϰāĻŋ āĻāϰā§āύ:
Web
import { GithubAuthProvider } from "firebase/auth"; const provider = new GithubAuthProvider();
Web
var provider = new firebase.auth.GithubAuthProvider();
- āĻāĻā§āĻāĻŋāĻ : āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ OAuth 2.0 āϏā§āĻā§āĻĒāĻā§āϞāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āύ āϝāĻž āĻāĻĒāύāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻāĻžāĻ āĻĨā§āĻā§ āĻ
āύā§āϰā§āϧ āĻāϰāϤ⧠āĻāĻžāύ⧎ āĻāĻāĻāĻŋ āϏā§āϝā§āĻ āϝā§āĻ āĻāϰāϤā§,
addScope
āĻāϞ āĻāϰā§āύāĨ¤ āϝā§āĻŽāύ:āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻĻā§āĻā§āύāĨ¤Web
provider.addScope('repo');
Web
provider.addScope('repo');
- āĻāĻā§āĻāĻŋāĻ : āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻžāϏā§āĻāĻŽ OAuth āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āύ āϝāĻž āĻāĻĒāύāĻŋ OAuth āĻ
āύā§āϰā§āϧā§āϰ āϏāĻžāĻĨā§ āĻĒāĻžāĻ āĻžāϤ⧠āĻāĻžāύāĨ¤ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϝā§āĻ āĻāϰāϤā§, OAuth āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻāĻŦāĻ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻŽāĻžāύ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻā§ āϏāĻŽāύā§āĻŦāĻŋāϤ āĻāĻāĻāĻŋ āĻŦāϏā§āϤ⧠āϏāĻš āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϤā§
setCustomParameters
āĻ āĻāϞ āĻāϰā§āύāĨ¤ āϝā§āĻŽāύ:āϏāĻāϰāĻā§āώāĻŋāϤ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ OAuth āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻ āύā§āĻŽā§āĻĻāĻŋāϤ āύāϝāĻŧ āĻāĻŦāĻ āĻāĻĒā§āĻā§āώāĻž āĻāϰāĻž āĻšāĻŦā§āĨ¤ āĻāϰ⧠āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāĻžāύāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĻā§āĻā§āύāĨ¤Web
provider.setCustomParameters({ 'allow_signup': 'false' });
Web
provider.setCustomParameters({ 'allow_signup': 'false' });
- GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻŦāϏā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύāĨ¤ āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻā§āϞāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻŦāĻž āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϤāĻžāĻĻā§āϰ GitHub āĻ
ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻ
āύā§āϰā§āϧ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϰāĻŋāĻĄāĻžāĻāϰā§āĻā§āĻ āĻĒāĻĻā§āϧāϤāĻŋ āĻŽā§āĻŦāĻžāĻāϞ āĻĄāĻŋāĻāĻžāĻāϏ⧠āĻĒāĻāύā§āĻĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
signInWithPopup
āĻāϞ āĻāϰā§āύ:āĻāĻāĻžāĻĄāĻŧāĻžāĻ āϞāĻā§āώā§āϝ āĻāϰā§āύ āϝ⧠āĻāĻĒāύāĻŋ GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ OAuth āĻā§āĻā§āύ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž GitHub API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻĄā§āĻāĻž āĻāύāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤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; // ... });
āĻāĻāĻŋāĻ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āϧāϰāϤ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϤā§āϰā§āĻāĻŋ āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĄāĻā§āϏ āĻĻā§āĻā§āύāĨ¤
- āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
signInWithRedirect
āĻāϞ āĻāϰā§āύ : `signInWithRedirect` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻ āύā§āĻļā§āϞāύāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύ⧎āϤāĻžāϰāĻĒāϰ, āĻāĻĒāύāĻžāϰ āĻĒā§āώā§āĻ āĻž āϞā§āĻĄ āĻšāϞā§Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResult
āĻāϞ āĻāϰ⧠āĻāĻĒāύāĻŋ GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ OAuth āĻā§āĻā§āύ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:āĻāĻāĻŋāĻ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āϧāϰāϤ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϤā§āϰā§āĻāĻŋ āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĄāĻā§āϏ āĻĻā§āĻā§āύāĨ¤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; // ... });
- āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻĒāύāĻŋ GitHub OAuth 2.0 āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻā§ āĻāϞ āĻāϰ⧠āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰ⧠āĻāĻāĻāĻŋ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
- āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻ āύā§āϏāϰāĻŖ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖāĻā§ āĻāĻā§āĻā§āϤ āĻāϰā§āύāĨ¤ GitHub āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻšā§āϰ āĻļā§āώā§, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ OAuth 2.0 āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻĒāĻžāĻŦā§āύāĨ¤
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ Node.js āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠Node.js āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠OAuth āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻĒāĻžāĻ āĻžāύ⧎
- āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠GitHub āĻāϰ āϏāĻžāĻĨā§ āϏāĻĢāϞāĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ Firebase āĻļāĻāϏāĻžāĻĒāϤā§āϰā§āϰ āĻāύā§āϝ OAuth 2.0 āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻŦāĻŋāύāĻŋāĻŽāϝāĻŧ āĻāϰā§āύ:
Web
import { GithubAuthProvider } from "firebase/auth"; const credential = GithubAuthProvider.credential(token);
Web
var credential = firebase.auth.GithubAuthProvider.credential(token);
- Firebase āĻļāĻāϏāĻžāĻĒāϤā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύ:
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 āĻāĻā§āϏāĻā§āύāĻļāύ⧠Firebase āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ Chrome āĻāĻā§āϏāĻā§āύāĻļāύ āĻ ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āύ, āĻ āĻĢāϏā§āĻā§āϰāĻŋāύ āĻĄāĻā§āĻŽā§āύā§āĻāϏ āĻāĻžāĻāĻĄ āĻĻā§āĻā§āύāĨ¤
āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ āύāϤā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻļāĻāϏāĻžāĻĒāϤā§āϰāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϞāĻŋāĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧâāĻ āϰā§āĻĨāĻžā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻĢā§āύ āύāĻŽā§āĻŦāϰ, āĻŦāĻž āĻĒā§āϰāĻŽāĻžāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϤāĻĨā§āϝ â āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰā§āĻā§āύāĨ¤ āĻāĻ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻ āĻāĻļ āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ āύāĻž āĻā§āύ, āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻ ā§āϝāĻžāĻĒ āĻā§āĻĄāĻŧā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻļāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§, āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖā§āϰ āϏā§āĻĨāĻŋāϤāĻŋ āĻāĻžāύāĻžāϰ āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ
Auth
āĻ āĻŦāĻā§āĻā§āĻā§ āĻāĻāĻāύ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻ āϏā§āĻ āĻāϰāĻžāĨ¤ āϤāĻžāϰāĻĒāϰ āĻāĻĒāύāĻŋUser
āĻ āĻŦāĻā§āĻā§āĻ āĻĨā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽā§āϞāĻŋāĻ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āϤāĻĨā§āϝ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻĻā§āĻā§āύāĨ¤āĻāĻĒāύāĻžāϰ Firebase Realtime Database āĻāĻŦāĻ Cloud Storage āϏā§āϰāĻā§āώāĻž āύāĻŋāϝāĻŧāĻŽā§ , āĻāĻĒāύāĻŋ
auth
āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĨā§āĻā§ āϏāĻžāĻāύ-āĻāύ āĻāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ āύāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāĻĄāĻŋ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āύ āĻĄā§āĻāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻžāĻāύ āĻāĻāĻ āĻāϰāϤā§, 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. });
āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϏāĻāĻšāϤ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϤāĻžāĻĻā§āϰ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase-āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻĒāύāĻŋ āϏāĻžāĻāύ-āĻāύ āĻĢā§āϞ⧠āĻāĻžāϞāĻžāϤ⧠Firebase SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āĻĨāĻŦāĻž āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ GitHub OAuth 2.0 āĻĢā§āϞ⧠āĻāĻžāϞāĻŋāϝāĻŧā§ āĻāĻŦāĻ āĻĢāϞ⧠āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ Firebase-āĻ āĻĒāĻžāϏ āĻāϰ⧠GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖāĻā§ āĻāĻā§āĻā§āϤ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§
- āĻāĻĒāύāĻžāϰ JavaScript āĻĒā§āϰāĻāϞā§āĻĒā§ Firebase āϝā§āĻ āĻāϰā§āύ āĨ¤
- Firebase āĻāύāϏā§āϞ⧠, Auth āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύāĨ¤
- āϏāĻžāĻāύ āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻā§āϝāĻžāĻŦā§, GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āϏāĻā§āώāĻŽ āĻāϰā§āύāĨ¤
- āϏā§āĻ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻāύāϏā§āϞ āĻĨā§āĻā§ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏāĻŋāĻā§āϰā§āĻ āϝā§āĻ āĻāϰā§āύ:
- GitHub-āĻ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻšāĻŋāϏā§āĻŦā§ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āύāĻŋāĻŦāύā§āϧāύ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ OAuth 2.0 āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏāĻŋāĻā§āϰā§āĻ āĻĒāĻžāύāĨ¤
- āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āϝ⧠āĻāĻĒāύāĻžāϰ Firebase OAuth āϰāĻŋāĻĄāĻžāĻāϰā§āĻā§āĻ URI (āϝā§āĻŽāύ
my-app-12345.firebaseapp.com/__/auth/handler
) āĻāĻĒāύāĻžāϰ GitHub āĻ ā§āϝāĻžāĻĒā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āϏā§āĻāĻŋāĻāϏ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻāĻĒāύāĻžāϰ āĻ āύā§āĻŽā§āĻĻāύ āĻāϞāĻŦā§āϝāĻžāĻ URL āĻšāĻŋāϏā§āĻŦā§ āϏā§āĻ āĻāϰāĻž āĻāĻā§āĨ¤
- āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻā§āϞāĻŋāĻ āĻāϰā§āύ.
Firebase SDK āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ-āĻāύ āĻĢā§āϞ⧠āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻāϝāĻŧā§āĻŦ āĻ ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāĻžāϰ āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻšāĻ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ Firebase JavaScript SDK-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻžāĨ¤ (āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ Node.js āĻŦāĻž āĻ āύā§āϝ āĻ -āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻšāĻāĻŋ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤)
Firebase JavaScript SDK āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤā§, āĻāĻ āϧāĻžāĻĒāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύ:
- GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻŦāϏā§āϤā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āϤā§āϰāĻŋ āĻāϰā§āύ:
Web
import { GithubAuthProvider } from "firebase/auth"; const provider = new GithubAuthProvider();
Web
var provider = new firebase.auth.GithubAuthProvider();
- āĻāĻā§āĻāĻŋāĻ : āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ OAuth 2.0 āϏā§āĻā§āĻĒāĻā§āϞāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āύ āϝāĻž āĻāĻĒāύāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻāĻžāĻ āĻĨā§āĻā§ āĻ
āύā§āϰā§āϧ āĻāϰāϤ⧠āĻāĻžāύ⧎ āĻāĻāĻāĻŋ āϏā§āϝā§āĻ āϝā§āĻ āĻāϰāϤā§,
addScope
āĻāϞ āĻāϰā§āύāĨ¤ āϝā§āĻŽāύ:āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻĻā§āĻā§āύāĨ¤Web
provider.addScope('repo');
Web
provider.addScope('repo');
- āĻāĻā§āĻāĻŋāĻ : āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻžāϏā§āĻāĻŽ OAuth āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āύ āϝāĻž āĻāĻĒāύāĻŋ OAuth āĻ
āύā§āϰā§āϧā§āϰ āϏāĻžāĻĨā§ āĻĒāĻžāĻ āĻžāϤ⧠āĻāĻžāύāĨ¤ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϝā§āĻ āĻāϰāϤā§, OAuth āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻāĻŦāĻ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻŽāĻžāύ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻā§ āϏāĻŽāύā§āĻŦāĻŋāϤ āĻāĻāĻāĻŋ āĻŦāϏā§āϤ⧠āϏāĻš āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϤā§
setCustomParameters
āĻ āĻāϞ āĻāϰā§āύāĨ¤ āϝā§āĻŽāύ:āϏāĻāϰāĻā§āώāĻŋāϤ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ OAuth āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻ āύā§āĻŽā§āĻĻāĻŋāϤ āύāϝāĻŧ āĻāĻŦāĻ āĻāĻĒā§āĻā§āώāĻž āĻāϰāĻž āĻšāĻŦā§āĨ¤ āĻāϰ⧠āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāĻžāύāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĻā§āĻā§āύāĨ¤Web
provider.setCustomParameters({ 'allow_signup': 'false' });
Web
provider.setCustomParameters({ 'allow_signup': 'false' });
- GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻŦāϏā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύāĨ¤ āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻā§āϞāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻŦāĻž āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϤāĻžāĻĻā§āϰ GitHub āĻ
ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻ
āύā§āϰā§āϧ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϰāĻŋāĻĄāĻžāĻāϰā§āĻā§āĻ āĻĒāĻĻā§āϧāϤāĻŋ āĻŽā§āĻŦāĻžāĻāϞ āĻĄāĻŋāĻāĻžāĻāϏ⧠āĻĒāĻāύā§āĻĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
signInWithPopup
āĻāϞ āĻāϰā§āύ:āĻāĻāĻžāĻĄāĻŧāĻžāĻ āϞāĻā§āώā§āϝ āĻāϰā§āύ āϝ⧠āĻāĻĒāύāĻŋ GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ OAuth āĻā§āĻā§āύ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž GitHub API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻĄā§āĻāĻž āĻāύāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤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; // ... });
āĻāĻāĻŋāĻ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āϧāϰāϤ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϤā§āϰā§āĻāĻŋ āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĄāĻā§āϏ āĻĻā§āĻā§āύāĨ¤
- āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
signInWithRedirect
āĻāϞ āĻāϰā§āύ : `signInWithRedirect` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻ āύā§āĻļā§āϞāύāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύ⧎āϤāĻžāϰāĻĒāϰ, āĻāĻĒāύāĻžāϰ āĻĒā§āώā§āĻ āĻž āϞā§āĻĄ āĻšāϞā§Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResult
āĻāϞ āĻāϰ⧠āĻāĻĒāύāĻŋ GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ OAuth āĻā§āĻā§āύ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:āĻāĻāĻŋāĻ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āϧāϰāϤ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϤā§āϰā§āĻāĻŋ āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĄāĻā§āϏ āĻĻā§āĻā§āύāĨ¤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; // ... });
- āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻĒāύāĻŋ GitHub OAuth 2.0 āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻā§ āĻāϞ āĻāϰ⧠āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰ⧠āĻāĻāĻāĻŋ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
- āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻ āύā§āϏāϰāĻŖ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖāĻā§ āĻāĻā§āĻā§āϤ āĻāϰā§āύāĨ¤ GitHub āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻšā§āϰ āĻļā§āώā§, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ OAuth 2.0 āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻĒāĻžāĻŦā§āύāĨ¤
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ Node.js āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠Node.js āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠OAuth āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻĒāĻžāĻ āĻžāύ⧎
- āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠GitHub āĻāϰ āϏāĻžāĻĨā§ āϏāĻĢāϞāĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ Firebase āĻļāĻāϏāĻžāĻĒāϤā§āϰā§āϰ āĻāύā§āϝ OAuth 2.0 āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻŦāĻŋāύāĻŋāĻŽāϝāĻŧ āĻāϰā§āύ:
Web
import { GithubAuthProvider } from "firebase/auth"; const credential = GithubAuthProvider.credential(token);
Web
var credential = firebase.auth.GithubAuthProvider.credential(token);
- Firebase āĻļāĻāϏāĻžāĻĒāϤā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύ:
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 āĻāĻā§āϏāĻā§āύāĻļāύ⧠Firebase āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ Chrome āĻāĻā§āϏāĻā§āύāĻļāύ āĻ ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āύ, āĻ āĻĢāϏā§āĻā§āϰāĻŋāύ āĻĄāĻā§āĻŽā§āύā§āĻāϏ āĻāĻžāĻāĻĄ āĻĻā§āĻā§āύāĨ¤
āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ āύāϤā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻļāĻāϏāĻžāĻĒāϤā§āϰāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϞāĻŋāĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧâāĻ āϰā§āĻĨāĻžā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻĢā§āύ āύāĻŽā§āĻŦāϰ, āĻŦāĻž āĻĒā§āϰāĻŽāĻžāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϤāĻĨā§āϝ â āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰā§āĻā§āύāĨ¤ āĻāĻ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻ āĻāĻļ āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ āύāĻž āĻā§āύ, āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻ ā§āϝāĻžāĻĒ āĻā§āĻĄāĻŧā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻļāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§, āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖā§āϰ āϏā§āĻĨāĻŋāϤāĻŋ āĻāĻžāύāĻžāϰ āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ
Auth
āĻ āĻŦāĻā§āĻā§āĻā§ āĻāĻāĻāύ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻ āϏā§āĻ āĻāϰāĻžāĨ¤ āϤāĻžāϰāĻĒāϰ āĻāĻĒāύāĻŋUser
āĻ āĻŦāĻā§āĻā§āĻ āĻĨā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽā§āϞāĻŋāĻ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āϤāĻĨā§āϝ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻĻā§āĻā§āύāĨ¤āĻāĻĒāύāĻžāϰ Firebase Realtime Database āĻāĻŦāĻ Cloud Storage āϏā§āϰāĻā§āώāĻž āύāĻŋāϝāĻŧāĻŽā§ , āĻāĻĒāύāĻŋ
auth
āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĨā§āĻā§ āϏāĻžāĻāύ-āĻāύ āĻāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ āύāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāĻĄāĻŋ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āύ āĻĄā§āĻāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻžāĻāύ āĻāĻāĻ āĻāϰāϤā§, 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. });
āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϏāĻāĻšāϤ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϤāĻžāĻĻā§āϰ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase-āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻĒāύāĻŋ āϏāĻžāĻāύ-āĻāύ āĻĢā§āϞ⧠āĻāĻžāϞāĻžāϤ⧠Firebase SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āĻĨāĻŦāĻž āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ GitHub OAuth 2.0 āĻĢā§āϞ⧠āĻāĻžāϞāĻŋāϝāĻŧā§ āĻāĻŦāĻ āĻĢāϞ⧠āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ Firebase-āĻ āĻĒāĻžāϏ āĻāϰ⧠GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖāĻā§ āĻāĻā§āĻā§āϤ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§
- āĻāĻĒāύāĻžāϰ JavaScript āĻĒā§āϰāĻāϞā§āĻĒā§ Firebase āϝā§āĻ āĻāϰā§āύ āĨ¤
- Firebase āĻāύāϏā§āϞ⧠, Auth āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύāĨ¤
- āϏāĻžāĻāύ āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻā§āϝāĻžāĻŦā§, GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āϏāĻā§āώāĻŽ āĻāϰā§āύāĨ¤
- āϏā§āĻ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻāύāϏā§āϞ āĻĨā§āĻā§ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏāĻŋāĻā§āϰā§āĻ āϝā§āĻ āĻāϰā§āύ:
- GitHub-āĻ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻšāĻŋāϏā§āĻŦā§ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āύāĻŋāĻŦāύā§āϧāύ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ OAuth 2.0 āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏāĻŋāĻā§āϰā§āĻ āĻĒāĻžāύāĨ¤
- āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āϝ⧠āĻāĻĒāύāĻžāϰ Firebase OAuth āϰāĻŋāĻĄāĻžāĻāϰā§āĻā§āĻ URI (āϝā§āĻŽāύ
my-app-12345.firebaseapp.com/__/auth/handler
) āĻāĻĒāύāĻžāϰ GitHub āĻ ā§āϝāĻžāĻĒā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āϏā§āĻāĻŋāĻāϏ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻāĻĒāύāĻžāϰ āĻ āύā§āĻŽā§āĻĻāύ āĻāϞāĻŦā§āϝāĻžāĻ URL āĻšāĻŋāϏā§āĻŦā§ āϏā§āĻ āĻāϰāĻž āĻāĻā§āĨ¤
- āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻā§āϞāĻŋāĻ āĻāϰā§āύ.
Firebase SDK āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ-āĻāύ āĻĢā§āϞ⧠āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻāϝāĻŧā§āĻŦ āĻ ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāĻžāϰ āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻšāĻ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ Firebase JavaScript SDK-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻžāĨ¤ (āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ Node.js āĻŦāĻž āĻ āύā§āϝ āĻ -āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻšāĻāĻŋ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤)
Firebase JavaScript SDK āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤā§, āĻāĻ āϧāĻžāĻĒāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύ:
- GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻŦāϏā§āϤā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āϤā§āϰāĻŋ āĻāϰā§āύ:
Web
import { GithubAuthProvider } from "firebase/auth"; const provider = new GithubAuthProvider();
Web
var provider = new firebase.auth.GithubAuthProvider();
- āĻāĻā§āĻāĻŋāĻ : āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ OAuth 2.0 āϏā§āĻā§āĻĒāĻā§āϞāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āύ āϝāĻž āĻāĻĒāύāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻāĻžāĻ āĻĨā§āĻā§ āĻ
āύā§āϰā§āϧ āĻāϰāϤ⧠āĻāĻžāύ⧎ āĻāĻāĻāĻŋ āϏā§āϝā§āĻ āϝā§āĻ āĻāϰāϤā§,
addScope
āĻāϞ āĻāϰā§āύāĨ¤ āϝā§āĻŽāύ:āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻĻā§āĻā§āύāĨ¤Web
provider.addScope('repo');
Web
provider.addScope('repo');
- āĻāĻā§āĻāĻŋāĻ : āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻžāϏā§āĻāĻŽ OAuth āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āύ āϝāĻž āĻāĻĒāύāĻŋ OAuth āĻ
āύā§āϰā§āϧā§āϰ āϏāĻžāĻĨā§ āĻĒāĻžāĻ āĻžāϤ⧠āĻāĻžāύāĨ¤ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϝā§āĻ āĻāϰāϤā§, OAuth āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻāĻŦāĻ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻŽāĻžāύ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻā§ āϏāĻŽāύā§āĻŦāĻŋāϤ āĻāĻāĻāĻŋ āĻŦāϏā§āϤ⧠āϏāĻš āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϤā§
setCustomParameters
āĻ āĻāϞ āĻāϰā§āύāĨ¤ āϝā§āĻŽāύ:āϏāĻāϰāĻā§āώāĻŋāϤ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ OAuth āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻ āύā§āĻŽā§āĻĻāĻŋāϤ āύāϝāĻŧ āĻāĻŦāĻ āĻāĻĒā§āĻā§āώāĻž āĻāϰāĻž āĻšāĻŦā§āĨ¤ āĻāϰ⧠āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāĻžāύāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĻā§āĻā§āύāĨ¤Web
provider.setCustomParameters({ 'allow_signup': 'false' });
Web
provider.setCustomParameters({ 'allow_signup': 'false' });
- GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻŦāϏā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύāĨ¤ āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻā§āϞāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻŦāĻž āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϤāĻžāĻĻā§āϰ GitHub āĻ
ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻ
āύā§āϰā§āϧ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϰāĻŋāĻĄāĻžāĻāϰā§āĻā§āĻ āĻĒāĻĻā§āϧāϤāĻŋ āĻŽā§āĻŦāĻžāĻāϞ āĻĄāĻŋāĻāĻžāĻāϏ⧠āĻĒāĻāύā§āĻĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
signInWithPopup
āĻāϞ āĻāϰā§āύ:āĻāĻāĻžāĻĄāĻŧāĻžāĻ āϞāĻā§āώā§āϝ āĻāϰā§āύ āϝ⧠āĻāĻĒāύāĻŋ GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ OAuth āĻā§āĻā§āύ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž GitHub API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻĄā§āĻāĻž āĻāύāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤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; // ... });
āĻāĻāĻŋāĻ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āϧāϰāϤ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϤā§āϰā§āĻāĻŋ āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĄāĻā§āϏ āĻĻā§āĻā§āύāĨ¤
- āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
signInWithRedirect
āĻāϞ āĻāϰā§āύ : `signInWithRedirect` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻ āύā§āĻļā§āϞāύāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύ⧎āϤāĻžāϰāĻĒāϰ, āĻāĻĒāύāĻžāϰ āĻĒā§āώā§āĻ āĻž āϞā§āĻĄ āĻšāϞā§Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResult
āĻāϞ āĻāϰ⧠āĻāĻĒāύāĻŋ GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ OAuth āĻā§āĻā§āύ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:āĻāĻāĻŋāĻ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āϧāϰāϤ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϤā§āϰā§āĻāĻŋ āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĄāĻā§āϏ āĻĻā§āĻā§āύāĨ¤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; // ... });
- āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻĒāύāĻŋ GitHub OAuth 2.0 āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻā§ āĻāϞ āĻāϰ⧠āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰ⧠āĻāĻāĻāĻŋ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
- āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻ āύā§āϏāϰāĻŖ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖāĻā§ āĻāĻā§āĻā§āϤ āĻāϰā§āύāĨ¤ GitHub āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻšā§āϰ āĻļā§āώā§, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ OAuth 2.0 āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻĒāĻžāĻŦā§āύāĨ¤
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ Node.js āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠Node.js āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠OAuth āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻĒāĻžāĻ āĻžāύ⧎
- āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠GitHub āĻāϰ āϏāĻžāĻĨā§ āϏāĻĢāϞāĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ Firebase āĻļāĻāϏāĻžāĻĒāϤā§āϰā§āϰ āĻāύā§āϝ OAuth 2.0 āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻŦāĻŋāύāĻŋāĻŽāϝāĻŧ āĻāϰā§āύ:
Web
import { GithubAuthProvider } from "firebase/auth"; const credential = GithubAuthProvider.credential(token);
Web
var credential = firebase.auth.GithubAuthProvider.credential(token);
- Firebase āĻļāĻāϏāĻžāĻĒāϤā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύ:
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 āĻāĻā§āϏāĻā§āύāĻļāύ⧠Firebase āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ Chrome āĻāĻā§āϏāĻā§āύāĻļāύ āĻ ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āύ, āĻ āĻĢāϏā§āĻā§āϰāĻŋāύ āĻĄāĻā§āĻŽā§āύā§āĻāϏ āĻāĻžāĻāĻĄ āĻĻā§āĻā§āύāĨ¤
āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ āύāϤā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻļāĻāϏāĻžāĻĒāϤā§āϰāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϞāĻŋāĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧâāĻ āϰā§āĻĨāĻžā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻĢā§āύ āύāĻŽā§āĻŦāϰ, āĻŦāĻž āĻĒā§āϰāĻŽāĻžāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϤāĻĨā§āϝ â āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰā§āĻā§āύāĨ¤ āĻāĻ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻ āĻāĻļ āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ āύāĻž āĻā§āύ, āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻ ā§āϝāĻžāĻĒ āĻā§āĻĄāĻŧā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻļāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§, āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖā§āϰ āϏā§āĻĨāĻŋāϤāĻŋ āĻāĻžāύāĻžāϰ āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ
Auth
āĻ āĻŦāĻā§āĻā§āĻā§ āĻāĻāĻāύ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻ āϏā§āĻ āĻāϰāĻžāĨ¤ āϤāĻžāϰāĻĒāϰ āĻāĻĒāύāĻŋUser
āĻ āĻŦāĻā§āĻā§āĻ āĻĨā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽā§āϞāĻŋāĻ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āϤāĻĨā§āϝ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻĻā§āĻā§āύāĨ¤āĻāĻĒāύāĻžāϰ Firebase Realtime Database āĻāĻŦāĻ Cloud Storage āϏā§āϰāĻā§āώāĻž āύāĻŋāϝāĻŧāĻŽā§ , āĻāĻĒāύāĻŋ
auth
āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĨā§āĻā§ āϏāĻžāĻāύ-āĻāύ āĻāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ āύāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāĻĄāĻŋ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āύ āĻĄā§āĻāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻžāĻāύ āĻāĻāĻ āĻāϰāϤā§, 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. });
āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϏāĻāĻšāϤ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϤāĻžāĻĻā§āϰ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase-āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻĒāύāĻŋ āϏāĻžāĻāύ-āĻāύ āĻĢā§āϞ⧠āĻāĻžāϞāĻžāϤ⧠Firebase SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āĻĨāĻŦāĻž āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ GitHub OAuth 2.0 āĻĢā§āϞ⧠āĻāĻžāϞāĻŋāϝāĻŧā§ āĻāĻŦāĻ āĻĢāϞ⧠āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ Firebase-āĻ āĻĒāĻžāϏ āĻāϰ⧠GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖāĻā§ āĻāĻā§āĻā§āϤ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§
- āĻāĻĒāύāĻžāϰ JavaScript āĻĒā§āϰāĻāϞā§āĻĒā§ Firebase āϝā§āĻ āĻāϰā§āύ āĨ¤
- Firebase āĻāύāϏā§āϞ⧠, Auth āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύāĨ¤
- āϏāĻžāĻāύ āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻā§āϝāĻžāĻŦā§, GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āϏāĻā§āώāĻŽ āĻāϰā§āύāĨ¤
- āϏā§āĻ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻāύāϏā§āϞ āĻĨā§āĻā§ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏāĻŋāĻā§āϰā§āĻ āϝā§āĻ āĻāϰā§āύ:
- GitHub-āĻ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻšāĻŋāϏā§āĻŦā§ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āύāĻŋāĻŦāύā§āϧāύ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ OAuth 2.0 āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏāĻŋāĻā§āϰā§āĻ āĻĒāĻžāύāĨ¤
- āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āϝ⧠āĻāĻĒāύāĻžāϰ Firebase OAuth āϰāĻŋāĻĄāĻžāĻāϰā§āĻā§āĻ URI (āϝā§āĻŽāύ
my-app-12345.firebaseapp.com/__/auth/handler
) āĻāĻĒāύāĻžāϰ GitHub āĻ ā§āϝāĻžāĻĒā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āϏā§āĻāĻŋāĻāϏ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻāĻĒāύāĻžāϰ āĻ āύā§āĻŽā§āĻĻāύ āĻāϞāĻŦā§āϝāĻžāĻ URL āĻšāĻŋāϏā§āĻŦā§ āϏā§āĻ āĻāϰāĻž āĻāĻā§āĨ¤
- āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻā§āϞāĻŋāĻ āĻāϰā§āύ.
Firebase SDK āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ-āĻāύ āĻĢā§āϞ⧠āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻāϝāĻŧā§āĻŦ āĻ ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāĻžāϰ āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻšāĻ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ Firebase JavaScript SDK-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻžāĨ¤ (āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ Node.js āĻŦāĻž āĻ āύā§āϝ āĻ -āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻšāĻāĻŋ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤)
Firebase JavaScript SDK āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤā§, āĻāĻ āϧāĻžāĻĒāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύ:
- GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻŦāϏā§āϤā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āϤā§āϰāĻŋ āĻāϰā§āύ:
Web
import { GithubAuthProvider } from "firebase/auth"; const provider = new GithubAuthProvider();
Web
var provider = new firebase.auth.GithubAuthProvider();
- āĻāĻā§āĻāĻŋāĻ : āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ OAuth 2.0 āϏā§āĻā§āĻĒāĻā§āϞāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āύ āϝāĻž āĻāĻĒāύāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻāĻžāĻ āĻĨā§āĻā§ āĻ
āύā§āϰā§āϧ āĻāϰāϤ⧠āĻāĻžāύ⧎ āĻāĻāĻāĻŋ āϏā§āϝā§āĻ āϝā§āĻ āĻāϰāϤā§,
addScope
āĻāϞ āĻāϰā§āύāĨ¤ āϝā§āĻŽāύ:āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻĻā§āĻā§āύāĨ¤Web
provider.addScope('repo');
Web
provider.addScope('repo');
- āĻāĻā§āĻāĻŋāĻ : āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻžāϏā§āĻāĻŽ OAuth āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āύ āϝāĻž āĻāĻĒāύāĻŋ OAuth āĻ
āύā§āϰā§āϧā§āϰ āϏāĻžāĻĨā§ āĻĒāĻžāĻ āĻžāϤ⧠āĻāĻžāύāĨ¤ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϝā§āĻ āĻāϰāϤā§, OAuth āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻāĻŦāĻ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻŽāĻžāύ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻā§ āϏāĻŽāύā§āĻŦāĻŋāϤ āĻāĻāĻāĻŋ āĻŦāϏā§āϤ⧠āϏāĻš āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϤā§
setCustomParameters
āĻ āĻāϞ āĻāϰā§āύāĨ¤ āϝā§āĻŽāύ:āϏāĻāϰāĻā§āώāĻŋāϤ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ OAuth āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻ āύā§āĻŽā§āĻĻāĻŋāϤ āύāϝāĻŧ āĻāĻŦāĻ āĻāĻĒā§āĻā§āώāĻž āĻāϰāĻž āĻšāĻŦā§āĨ¤ āĻāϰ⧠āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāĻžāύāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĻā§āĻā§āύāĨ¤Web
provider.setCustomParameters({ 'allow_signup': 'false' });
Web
provider.setCustomParameters({ 'allow_signup': 'false' });
- GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻŦāϏā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύāĨ¤ āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻā§āϞāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻŦāĻž āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϤāĻžāĻĻā§āϰ GitHub āĻ
ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻ
āύā§āϰā§āϧ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϰāĻŋāĻĄāĻžāĻāϰā§āĻā§āĻ āĻĒāĻĻā§āϧāϤāĻŋ āĻŽā§āĻŦāĻžāĻāϞ āĻĄāĻŋāĻāĻžāĻāϏ⧠āĻĒāĻāύā§āĻĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
signInWithPopup
āĻāϞ āĻāϰā§āύ:āĻāĻāĻžāĻĄāĻŧāĻžāĻ āϞāĻā§āώā§āϝ āĻāϰā§āύ āϝ⧠āĻāĻĒāύāĻŋ GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ OAuth āĻā§āĻā§āύ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž GitHub API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻĄā§āĻāĻž āĻāύāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤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; // ... });
āĻāĻāĻŋāĻ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āϧāϰāϤ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϤā§āϰā§āĻāĻŋ āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĄāĻā§āϏ āĻĻā§āĻā§āύāĨ¤
- āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
signInWithRedirect
āĻāϞ āĻāϰā§āύ : `signInWithRedirect` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻ āύā§āĻļā§āϞāύāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύ⧎āϤāĻžāϰāĻĒāϰ, āĻāĻĒāύāĻžāϰ āĻĒā§āώā§āĻ āĻž āϞā§āĻĄ āĻšāϞā§Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResult
āĻāϞ āĻāϰ⧠āĻāĻĒāύāĻŋ GitHub āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ OAuth āĻā§āĻā§āύ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:āĻāĻāĻŋāĻ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āϧāϰāϤ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϤā§āϰā§āĻāĻŋ āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻĄāĻā§āϏ āĻĻā§āĻā§āύāĨ¤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; // ... });
- āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻāĻāύā§āĻĄā§ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§,
āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻĒāύāĻŋ GitHub OAuth 2.0 āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻā§ āĻāϞ āĻāϰ⧠āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰ⧠āĻāĻāĻāĻŋ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
- āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰā§āϰ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻ āύā§āϏāϰāĻŖ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ GitHub āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖāĻā§ āĻāĻā§āĻā§āϤ āĻāϰā§āύāĨ¤ GitHub āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻšā§āϰ āĻļā§āώā§, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ OAuth 2.0 āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻĒāĻžāĻŦā§āύāĨ¤
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ Node.js āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠Node.js āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠OAuth āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻĒāĻžāĻ āĻžāύ⧎
- āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠GitHub āĻāϰ āϏāĻžāĻĨā§ āϏāĻĢāϞāĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ Firebase āĻļāĻāϏāĻžāĻĒāϤā§āϰā§āϰ āĻāύā§āϝ OAuth 2.0 āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻā§āĻā§āύ āĻŦāĻŋāύāĻŋāĻŽāϝāĻŧ āĻāϰā§āύ:
Web
import { GithubAuthProvider } from "firebase/auth"; const credential = GithubAuthProvider.credential(token);
Web
var credential = firebase.auth.GithubAuthProvider.credential(token);
- Firebase āĻļāĻāϏāĻžāĻĒāϤā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύ:
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 āĻāĻā§āϏāĻā§āύāĻļāύ⧠Firebase āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ Chrome āĻāĻā§āϏāĻā§āύāĻļāύ āĻ ā§āϝāĻžāĻĒ āϤā§āϰāĻŋ āĻāϰā§āύ, āĻ āĻĢāϏā§āĻā§āϰāĻŋāύ āĻĄāĻā§āĻŽā§āύā§āĻāϏ āĻāĻžāĻāĻĄ āĻĻā§āĻā§āύāĨ¤
āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ āύāϤā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻļāĻāϏāĻžāĻĒāϤā§āϰāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϞāĻŋāĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧâāĻ āϰā§āĻĨāĻžā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻĢā§āύ āύāĻŽā§āĻŦāϰ, āĻŦāĻž āĻĒā§āϰāĻŽāĻžāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϤāĻĨā§āϝ â āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰā§āĻā§āύāĨ¤ āĻāĻ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻ āĻāĻļ āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ āύāĻž āĻā§āύ, āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻ ā§āϝāĻžāĻĒ āĻā§āĻĄāĻŧā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻļāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§, āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖā§āϰ āϏā§āĻĨāĻŋāϤāĻŋ āĻāĻžāύāĻžāϰ āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ
Auth
āĻ āĻŦāĻā§āĻā§āĻā§ āĻāĻāĻāύ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻ āϏā§āĻ āĻāϰāĻžāĨ¤ āϤāĻžāϰāĻĒāϰ āĻāĻĒāύāĻŋUser
āĻ āĻŦāĻā§āĻā§āĻ āĻĨā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽā§āϞāĻŋāĻ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āϤāĻĨā§āϝ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻĻā§āĻā§āύāĨ¤āĻāĻĒāύāĻžāϰ Firebase Realtime Database āĻāĻŦāĻ Cloud Storage āϏā§āϰāĻā§āώāĻž āύāĻŋāϝāĻŧāĻŽā§ , āĻāĻĒāύāĻŋ
auth
āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĨā§āĻā§ āϏāĻžāĻāύ-āĻāύ āĻāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ āύāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāĻĄāĻŋ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āύ āĻĄā§āĻāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻžāĻāύ āĻāĻāĻ āĻāϰāϤā§, 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. });