GitHub requires an OAuth 2.0 redirect, so you can either handle the redirect
directly, or use the signInWithPopup handler:
example
// Using a redirect.
firebase.auth().getRedirectResult().then(function(result) {
if (result.credential) {
// This gives you a GitHub Access Token.var token = result.credential.accessToken;
}
var user = result.user;
}).catch(function(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;
if (errorCode === 'auth/account-exists-with-different-credential') {
alert('You have signed up with a different provider for that email.');
// Handle linking here if your app allows it.
} else {
console.error(error);
}
});
// Start a sign in process for an unauthenticated user.var provider = new firebase.auth.GithubAuthProvider();
provider.addScope('repo');
firebase.auth().signInWithRedirect(provider);
example
// With popup.var provider = new firebase.auth.GithubAuthProvider();
provider.addScope('repo');
firebase.auth().signInWithPopup(provider).then(function(result) {
// This gives you a GitHub Access Token.var token = result.credential.accessToken;
// The signed-in user info.var user = result.user;
}).catch(function(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;
if (errorCode === 'auth/account-exists-with-different-credential') {
alert('You have signed up with a different provider for that email.');
// Handle linking here if your app allows it.
} else {
console.error(error);
}
});
Sets the OAuth custom parameters to pass in a GitHub OAuth request for popup
and redirect sign-in operations.
Valid parameters include 'allow_signup'.
For a detailed list, check the
GitHub documentation.
Reserved required OAuth 2.0 parameters such as 'client_id', 'redirect_uri',
'scope', 'response_type' and 'state' are not allowed and will be ignored.
Parameters
customOAuthParameters: Object
The custom OAuth parameters to pass
in the OAuth request.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2022-09-29 UTC."],[],[],null,["- [firebase](/docs/reference/js/v8/firebase).\n- [auth](/docs/reference/js/v8/firebase.auth).\n- GithubAuthProvider \nGitHub auth provider.\n\nGitHub requires an OAuth 2.0 redirect, so you can either handle the redirect\ndirectly, or use the signInWithPopup handler:\n\nexample\n:\n\n // Using a redirect.\n firebase.auth().getRedirectResult().then(function(result) {\n if (result.credential) {\n // This gives you a GitHub Access Token.\n var token = result.credential.accessToken;\n }\n var user = result.user;\n }).catch(function(error) {\n // Handle Errors here.\n var errorCode = error.code;\n var errorMessage = error.message;\n // The email of the user's account used.\n var email = error.email;\n // The firebase.auth.AuthCredential type that was used.\n var credential = error.credential;\n if (errorCode === 'auth/account-exists-with-different-credential') {\n alert('You have signed up with a different provider for that email.');\n // Handle linking here if your app allows it.\n } else {\n console.error(error);\n }\n });\n\n // Start a sign in process for an unauthenticated user.\n var provider = new firebase.auth.GithubAuthProvider();\n provider.addScope('repo');\n firebase.auth().signInWithRedirect(provider);\n\n\nexample\n:\n\n // With popup.\n var provider = new firebase.auth.GithubAuthProvider();\n provider.addScope('repo');\n firebase.auth().signInWithPopup(provider).then(function(result) {\n // This gives you a GitHub Access Token.\n var token = result.credential.accessToken;\n // The signed-in user info.\n var user = result.user;\n }).catch(function(error) {\n // Handle Errors here.\n var errorCode = error.code;\n var errorMessage = error.message;\n // The email of the user's account used.\n var email = error.email;\n // The firebase.auth.AuthCredential type that was used.\n var credential = error.credential;\n if (errorCode === 'auth/account-exists-with-different-credential') {\n alert('You have signed up with a different provider for that email.');\n // Handle linking here if your app allows it.\n } else {\n console.error(error);\n }\n });\n\n\nsee\n\n: [firebase.auth.Auth.onAuthStateChanged](/docs/reference/js/v8/firebase.auth.Auth#onauthstatechanged) to receive sign in state\n changes.\n\nImplements\n\n- [AuthProvider](/docs/reference/js/v8/firebase.auth.AuthProvider)\n\nIndex\n\nProperties\n\n- [providerId](/docs/reference/js/v8/firebase.auth.GithubAuthProvider#providerid)\n- [GITHUB_SIGN_IN_METHOD](/docs/reference/js/v8/firebase.auth.GithubAuthProvider#github_sign_in_method)\n- [PROVIDER_ID](/docs/reference/js/v8/firebase.auth.GithubAuthProvider#provider_id)\n\nMethods\n\n- [addScope](/docs/reference/js/v8/firebase.auth.GithubAuthProvider#addscope)\n- [setCustomParameters](/docs/reference/js/v8/firebase.auth.GithubAuthProvider#setcustomparameters)\n- [credential](/docs/reference/js/v8/firebase.auth.GithubAuthProvider#credential)\n\nProperties\n\nproviderId \nproviderId: string\n| Implementation of [AuthProvider](/docs/reference/js/v8/firebase.auth.AuthProvider).[providerId](/docs/reference/js/v8/firebase.auth.AuthProvider#providerid)\n| Inherited from [GithubAuthProvider](/docs/reference/js/v8/firebase.auth.GithubAuthProvider).[providerId](/docs/reference/js/v8/firebase.auth.GithubAuthProvider#providerid)\n\nStatic GITHUB_SIGN_IN_METHOD \nGITHUB_SIGN_IN_METHOD: string \nThis corresponds to the sign-in method identifier as returned in\n[firebase.auth.Auth.fetchSignInMethodsForEmail](/docs/reference/js/v8/firebase.auth.Auth#fetchsigninmethodsforemail).\n\nStatic PROVIDER_ID \nPROVIDER_ID: string\n\nMethods\n\naddScope\n\n- addScope ( scope : string ) : [AuthProvider](/docs/reference/js/v8/firebase.auth.AuthProvider)\n-\n Inherited from [GithubAuthProvider](/docs/reference/js/v8/firebase.auth.GithubAuthProvider).[addScope](/docs/reference/js/v8/firebase.auth.GithubAuthProvider#addscope) \n\n Parameters\n -\n\n scope: string \n Github OAuth scope.\n\n Returns [AuthProvider](/docs/reference/js/v8/firebase.auth.AuthProvider)\n\n The provider instance itself.\n\nsetCustomParameters\n\n- setCustomParameters ( customOAuthParameters : Object ) : [AuthProvider](/docs/reference/js/v8/firebase.auth.AuthProvider)\n-\n Inherited from [GithubAuthProvider](/docs/reference/js/v8/firebase.auth.GithubAuthProvider).[setCustomParameters](/docs/reference/js/v8/firebase.auth.GithubAuthProvider#setcustomparameters) \n Sets the OAuth custom parameters to pass in a GitHub OAuth request for popup\n and redirect sign-in operations.\n Valid parameters include 'allow_signup'.\n For a detailed list, check the\n [GitHub](https://developer.github.com/v3/oauth/) documentation.\n Reserved required OAuth 2.0 parameters such as 'client_id', 'redirect_uri',\n 'scope', 'response_type' and 'state' are not allowed and will be ignored.\n\n Parameters\n -\n\n customOAuthParameters: Object \n The custom OAuth parameters to pass\n in the OAuth request.\n\n Returns [AuthProvider](/docs/reference/js/v8/firebase.auth.AuthProvider)\n\n The provider instance itself.\n\nStatic credential\n\n- credential ( token : string ) : [OAuthCredential](/docs/reference/js/v8/firebase.auth.OAuthCredential)\n-\n\n example\n :\n\n var cred = firebase.auth.GithubAuthProvider.credential(\n // `event` from the Github auth.authResponseChange callback.\n event.authResponse.accessToken\n );\n\n\n Parameters\n -\n\n token: string \n Github access token.\n\n Returns [OAuthCredential](/docs/reference/js/v8/firebase.auth.OAuthCredential)\n\nThe auth provider credential."]]
GitHub auth provider.
GitHub requires an OAuth 2.0 redirect, so you can either handle the redirect directly, or use the signInWithPopup handler:
// Using a redirect. firebase.auth().getRedirectResult().then(function(result) { if (result.credential) { // This gives you a GitHub Access Token. var token = result.credential.accessToken; } var user = result.user; }).catch(function(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; if (errorCode === 'auth/account-exists-with-different-credential') { alert('You have signed up with a different provider for that email.'); // Handle linking here if your app allows it. } else { console.error(error); } }); // Start a sign in process for an unauthenticated user. var provider = new firebase.auth.GithubAuthProvider(); provider.addScope('repo'); firebase.auth().signInWithRedirect(provider);
// With popup. var provider = new firebase.auth.GithubAuthProvider(); provider.addScope('repo'); firebase.auth().signInWithPopup(provider).then(function(result) { // This gives you a GitHub Access Token. var token = result.credential.accessToken; // The signed-in user info. var user = result.user; }).catch(function(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; if (errorCode === 'auth/account-exists-with-different-credential') { alert('You have signed up with a different provider for that email.'); // Handle linking here if your app allows it. } else { console.error(error); } });
firebase.auth.Auth.onAuthStateChanged to receive sign in state changes.