apps/docs/content/guides/auth/social-login/auth-github.mdx
To enable GitHub Auth for your project, you need to set up a GitHub OAuth application and add the application credentials to your Supabase Dashboard.
Setting up GitHub logins for your application consists of 3 parts:
<$Partial path="social_provider_setup.mdx" variables={{ "provider": "GitHub" }} />
Register a new application. If you've created an app before, click New OAuth App here.Application name, type the name of your app.Homepage URL, type the full URL to your app's website.Authorization callback URL, type the callback URL of your app.Enable Device Flow unchecked.Register Application.Copy your new OAuth credentials
Client ID.Generate a new client secret.Client secret.<$Partial path="social_provider_settings_supabase.mdx" variables={{ "provider": "GitHub" }} />
You can also configure the GitHub auth provider using the Management API:
# Get your access token from https://supabase.com/dashboard/account/tokens
export SUPABASE_ACCESS_TOKEN="your-access-token"
export PROJECT_REF="your-project-ref"
# Configure GitHub auth provider
curl -X PATCH "https://api.supabase.com/v1/projects/$PROJECT_REF/config/auth" \
-H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"external_github_enabled": true,
"external_github_client_id": "your-github-client-id",
"external_github_secret": "your-github-client-secret"
}'
<Tabs scrollable size="small" type="underlined" defaultActiveId="js" queryGroup="language"
<TabPanel id="js" label="JavaScript">
<$Partial path="create_client_snippet.mdx" />
When your user signs in, call signInWithOAuth() with github as the provider:
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
'https://your-project-id.supabase.co',
'sb_publishable_... or anon key'
)
// ---cut---
async function signInWithGithub() {
const { data, error } = await supabase.auth.signInWithOAuth({
provider: 'github',
})
}
When your user signs in, call signInWithOAuth() with github as the provider:
Future<void> signInWithGithub() async {
await supabase.auth.signInWithOAuth(
OAuthProvider.github,
redirectTo: kIsWeb ? null : 'my.scheme://my-host', // Optionally set the redirect link to bring back the user via deeplink.
authScreenLaunchMode:
kIsWeb ? LaunchMode.platformDefault : LaunchMode.externalApplication, // Launch the auth screen in a new webview on mobile.
);
}
When your user signs in, call signInWithOAuth with .github as the Provider:
func signInWithGithub() async throws {
try await supabase.auth.signInWithOAuth(
provider: .github,
redirectTo: URL(string: "my-custom-scheme://my-app-host")
)
}
When your user signs in, call signInWith(Provider) with Github as the Provider:
suspend fun signInWithGithub() {
supabase.auth.signInWith(Github)
}
<$Partial path="oauth_pkce_flow.mdx" />
<Tabs scrollable size="small" type="underlined" defaultActiveId="js" queryGroup="language"
<TabPanel id="js" label="JavaScript">
When your user signs out, call signOut() to remove them from the browser session and any objects from localStorage:
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
'https://your-project-id.supabase.co',
'sb_publishable_... or anon key'
)
// ---cut---
async function signOut() {
const { error } = await supabase.auth.signOut()
}
When your user signs out, call signOut() to remove them from the browser session and any objects from localStorage:
Future<void> signOut() async {
await supabase.auth.signOut();
}
When your user signs out, call signOut() to remove them from the browser session and any objects from localStorage:
suspend fun signOut() {
supabase.auth.signOut()
}