Set up OAuth providers
Set up social sign-in with GitHub, Google, Microsoft and 7 more providers: the callback URL for each provider, where to paste credentials in Access & Security, and fixes for common errors.
Let people sign in with accounts they already have, such as GitHub or Google, instead of creating another password. Social sign-in works for both portal users (your customers) and team members. This article covers the supported providers, how to set up GitHub and Google, and how to fix common errors.
Supported providers
Provider | Settings | Notes |
|---|---|---|
Apple | Client ID, Client Secret, App Bundle Identifier (optional) | Bundle ID is only needed for native app sign-in |
Discord | Client ID, Client Secret | |
Client ID, Client Secret | ||
GitHub | Client ID, Client Secret | |
GitLab | Client ID, Client Secret, Issuer URL (optional) | Issuer URL is for self-managed GitLab |
Client ID, Client Secret | ||
Client ID, Client Secret | ||
Microsoft | Client ID, Client Secret, Workspace ID (optional) | Enter your Microsoft Entra directory ID to limit sign-in to your organization. Defaults to "common", which allows any Microsoft account |
Client ID, Client Secret | ||
Twitter / X | Client ID, Client Secret |
Every provider works for portal users and team members. You configure a provider once and turn it on with a single toggle, which adds it to both the portal sign-in form and the team sign-in form. Social providers are off until you turn them on.
For team-wide single sign-on with verified domains and enforcement, see Set up single sign-on. For a custom OIDC button on the portal sign-in form, see Control portal access and sign-in.
How it works
- The person clicks Continue with the provider.
- A window opens the provider's sign-in page.
- They sign in and grant permission.
- The provider redirects back to Quackback with an authorization code.
- Quackback exchanges the code for the person's profile and email.
- Quackback creates their session.
The callback URL
Every provider needs a callback URL (also called a redirect URI) in this form:
https://YOUR_DOMAIN/api/auth/callback/PROVIDER_IDYOUR_DOMAIN is the domain people use to reach your Quackback workspace. PROVIDER_ID is one of: apple, discord, facebook, github, gitlab, google, linkedin, microsoft, reddit, twitter.
For example: https://feedback.yourcompany.com/api/auth/callback/github.
Set up GitHub
Step 1: Create an OAuth app on GitHub
- Go to GitHub Developer Settings.
- Click OAuth Apps, then New OAuth App.
- Fill in the details shown in the table below.
- Click Register application.
- Copy the Client ID.
- Click Generate a new client secret and store it safely.
Field | Value |
|---|---|
Application name |
|
Homepage URL |
|
Authorization callback URL |
|
Step 2: Add the credentials in Quackback
- Go to Admin > Settings > Access & Security and open the Sign-in tab.
- In the Social sign-in card, find GitHub and click Configure.
- Paste the Client ID and Client Secret, then save.
- Turn GitHub on.
Set up Google
Step 1: Create OAuth credentials in Google Cloud
- Go to the Google Cloud Console.
- Create a project or select an existing one.
- Go to APIs & Services, then Credentials.
- Click Create Credentials, then OAuth client ID.
If prompted, configure the OAuth consent screen first:
- User type: External (or Internal for a Google Workspace organization)
- App name:
Quackback - User support email: your email
- Authorized domains:
yourcompany.com
Step 2: Configure the OAuth client
- Application type: Web application.
- Name:
Quackback. - Authorized JavaScript origins:
https://feedback.yourcompany.com - Authorized redirect URIs:
https://feedback.yourcompany.com/api/auth/callback/google - Click Create.
- Copy the Client ID and Client Secret.
Step 3: Add the credentials in Quackback
- Go to Admin > Settings > Access & Security and open the Sign-in tab.
- In the Social sign-in card, find Google and click Configure.
- Paste the Client ID and Client Secret, then save.
- Turn Google on.
Other providers
Every other provider follows the same pattern:
- Create an OAuth application in the provider's developer console.
- Set the callback URL to
https://YOUR_DOMAIN/api/auth/callback/PROVIDER_ID. - Enter the Client ID and Client Secret under Admin > Settings > Access & Security > Sign-in > Social sign-in, then turn the provider on.
Provider | Developer console | Callback path |
|---|---|---|
Apple |
| |
Discord |
| |
| ||
GitLab |
| |
| ||
Microsoft |
| |
| ||
Twitter / X |
|
A provider only appears on the sign-in page once its credentials are saved and its toggle is on. Its toggle stays locked off until you save a Client ID and Client Secret.
Credentials are stored encrypted in Quackback. You don't set them as environment variables.
Common issues
Callback URL mismatch
The callback URL in your provider's app must match exactly. Check for:
httpversushttps- A trailing slash
- A missing or wrong port number
- A different domain or subdomain
Invalid client ID or client secret
- Check that you copied the values exactly, with no extra spaces.
- Make sure the OAuth app hasn't been deleted or disabled.
- For Google, check whether the consent screen is still in testing mode.
Popup blocked
Social sign-in opens the provider in a popup window. If the browser blocks it, allow popups for your Quackback domain and try again.
"Access denied" or "Application not authorized"
- GitHub: check that the OAuth app isn't suspended, and review your organization's access policies.
- Google: if the consent screen is in testing mode, add test users, or submit the app for verification for production use. Check whether domain restrictions apply.
"Unable to get email from provider"
Quackback needs an email address from the provider.
- GitHub: the person needs a public email or must grant email access. Quackback also checks their verified email list.
- Google: the email scope is always requested.
The sign-in redirects to the wrong address (self-hosted)
If you self-host, make sure BASE_URL matches the public address of your instance, and that your reverse proxy passes the original host and protocol headers. See Set up a reverse proxy.
Security best practices
- Protect client secrets. Rotate them from time to time and update them with Configure on each provider.
- Use separate OAuth apps for testing and production, so leaking one set doesn't expose the other.
- Use HTTPS callback URLs on your exact domain. Don't use wildcards.
- Turn off providers you don't use.
Quackback only requests basic profile information and the email address. It never asks for write access to the person's account.
Related articles
Was this helpful?
Your feedback shapes what we write next.
