Each provider needs a SocialApp entry in the Django Admin.
Go to: Admin → Social Accounts → Social applications → Add social application
Fields to fill:
- Provider — select from the dropdown
- Name — any label (e.g. "GitHub")
- Client ID — the OAuth App ID / Client ID from the provider
- Secret key — the OAuth Secret from the provider
- Key — only required for Apple (the Key ID, see below)
- Settings — optional JSON for provider-specific options (e.g. Apple's
certificate_key) - Sites — move your site (e.g.
example.com) from "Available" to "Chosen"
- Go to https://github.com/settings/developers → OAuth Apps → New OAuth App
- Fill in:
- Application name: QGIS Plugins (or any label)
- Homepage URL:
https://plugins.qgis.org - Authorization callback URL:
https://plugins.qgis.org/accounts/github/login/callback/
- Click Register application, then Generate a new client secret.
- In Django Admin:
- Provider:
GitHub - Client ID: the Client ID shown on the app page
- Secret key: the Client secret you just generated
- Provider:
- Go to https://console.cloud.google.com/ → Select or create a project.
- Navigate to APIs & Services → Credentials → Create Credentials → OAuth client ID.
- Set Application type to Web application.
- Add to Authorized redirect URIs:
https://plugins.qgis.org/accounts/google/login/callback/ - Click Create. Note the Client ID and Client secret.
- In Django Admin:
- Provider:
Google - Client ID: the Client ID
- Secret key: the Client secret
- Provider:
You may also need to enable the Google People API under APIs & Services → Library.
- Go to https://gitlab.com/-/user_settings/applications → Add new application.
- Fill in:
- Name: QGIS Plugins
- Redirect URI:
https://plugins.qgis.org/accounts/gitlab/login/callback/ - Scopes: check
read_user
- Click Save application. Note the Application ID and Secret.
- In Django Admin:
- Provider:
GitLab - Client ID: the Application ID
- Secret key: the Secret
- Provider:
Uncomment and edit the gitlab section in qgis-app/settings_local.py
(copy from settings_local.py.templ):
SOCIALACCOUNT_PROVIDERS = {
"gitlab": {
"GITLAB_URL": "https://your-gitlab.example.com",
"SCOPE": ["read_user"],
},
}Then create the OAuth application on your self-hosted instance at
https://your-gitlab.example.com/-/profile/applications.
- Go to https://www.openstreetmap.org/user/YOUR_USERNAME/oauth_clients/new
(replaceYOUR_USERNAMEwith your OSM username). - Fill in:
- Name: QGIS Plugins
- Main Application URL:
https://plugins.qgis.org - Callback URL:
https://plugins.qgis.org/accounts/openstreetmap/login/callback/ - Permissions: check Read user preferences
- Click Register. Note the Consumer Key and Consumer Secret.
- In Django Admin:
- Provider:
OpenStreetMap - Client ID: the Consumer Key
- Secret key: the Consumer Secret
- Provider:
OSM uses OAuth 1.0a — django-allauth handles this transparently.
- Go to https://portal.azure.com/ → Microsoft Entra ID → App registrations → New registration.
- Fill in:
- Name: QGIS Plugins
- Supported account types: Accounts in any organizational directory and personal Microsoft accounts (for
"tenant": "common") - Redirect URI: Web —
https://plugins.qgis.org/accounts/microsoft/login/callback/
- Click Register. Note the Application (client) ID.
- Go to Certificates & secrets → New client secret. Note the Value (only shown once).
- Go to API permissions → Add a permission → Microsoft Graph → Delegated → User.Read → Grant admin consent.
- In Django Admin:
- Provider:
Microsoft - Client ID: the Application (client) ID
- Secret key: the client secret Value
- Provider:
To restrict to a specific tenant (organisation), change
"tenant": "common"to your Directory (tenant) ID insettings_local.py.
Apple Sign In requires extra steps compared to other providers.
You need an Apple Developer account (https://developer.apple.com).
-
Create an App ID:
- Go to Certificates, Identifiers & Profiles → Identifiers → +
- Type: App IDs → App
- Enable Sign In with Apple
- Note the Bundle ID (e.g.
org.qgis.plugins)
-
Create a Services ID (this is the OAuth client):
- Go to Identifiers → + → Services IDs
- Description: QGIS Plugins
- Identifier: e.g.
org.qgis.plugins.web(must be unique, different from Bundle ID) - Enable Sign In with Apple → Configure:
- Primary App ID: select the App ID from step 1
- Domains:
plugins.qgis.org - Return URLs:
https://plugins.qgis.org/accounts/apple/login/callback/
- Note the Services ID identifier — this is your Client ID
-
Create a Key:
- Go to Keys → +
- Enable Sign In with Apple → Configure → select your Primary App ID
- Click Register and Download the
.p8file (only downloadable once) - Note the Key ID
-
In Django Admin:
- Provider:
Apple - Client ID: the Services ID identifier (e.g.
org.qgis.plugins.web) - Secret key: your Team ID (found top-right in the developer portal, 10 chars)
- Key: paste the full content of the downloaded
.p8file
django-allauth uses the Team ID + Key ID +
.p8content to generate a JWT client secret dynamically. You also need to set Key ID inqgis-app/settings_local.py(copy fromsettings_local.py.templ):SOCIALACCOUNT_PROVIDERS = { "apple": { "APP": { "client_id": "org.qgis.plugins.web", "secret": "TEAM_ID", "key": "KEY_ID", "settings": { "certificate_key": """-----BEGIN PRIVATE KEY----- ...your .p8 content here... -----END PRIVATE KEY-----""" } } }, }
The other fields (Client ID = Services ID, Secret key = Team ID) can also be stored in the DB via Admin as a fallback, but the
certificate_keymust be in settings. - Provider:
- Go to https://www.linkedin.com/developers/apps/new → Create an app.
- Fill in the required fields (App name, LinkedIn Page, logo).
- After creation, go to the Auth tab:
- Note the Client ID and Client Secret
- Add to Authorized redirect URLs for your app:
https://plugins.qgis.org/accounts/linkedin_oauth2/login/callback/
- Go to the Products tab → Request access to Sign In with LinkedIn using OpenID Connect.
- In Django Admin:
- Provider:
LinkedIn - Client ID: the Client ID
- Secret key: the Client Secret
- Provider:
The
openid,profile, andr_liteprofile,r_emailaddress) also works but uses the legacy
Telegram uses a Login Widget rather than standard OAuth. There is no redirect URI.
- Open Telegram and message @BotFather.
- Send
/newbotand follow the prompts to create a bot. Note the bot token (format:123456789:ABC-...). - Send
/setdomainto BotFather, select your bot, and enter your domain:plugins.qgis.org. - In Django Admin:
- Provider:
Telegram - Client ID: your bot username (without
@, e.g.QGISPluginsBot) - Secret key: the bot token (e.g.
123456789:ABC-...)
- Provider:
The Telegram provider works via a login widget that calls back to
https://plugins.qgis.org/accounts/telegram/login/callback/.
No client secret registration on a portal is needed — the bot token itself signs the payload.
| Provider | Callback URL |
|---|---|
| GitHub | /accounts/github/login/callback/ |
/accounts/google/login/callback/ |
|
| GitLab | /accounts/gitlab/login/callback/ |
| OpenStreetMap | /accounts/openstreetmap/login/callback/ |
| Microsoft | /accounts/microsoft/login/callback/ |
| Apple | /accounts/apple/login/callback/ |
/accounts/linkedin_oauth2/login/callback/ |
|
| Telegram | /accounts/telegram/login/callback/ |
Prepend your domain, e.g. https://plugins.qgis.org/accounts/github/login/callback/.
For local development replace the domain with http://localhost:8000 and register a separate OAuth app (or add localhost as an allowed redirect on the existing one).