Skip to Content

LinkedIn Social Login

The LinkedIn social connection (type linkedin) lets users sign in with their LinkedIn account through Sign In with LinkedIn using OpenID Connect. Bring your own app β€” there is no shared Faable app for LinkedIn, so you create one in the LinkedIn Developer Portal.

Faable sends users to https://www.linkedin.com/oauth/v2/authorization, exchanges the code at https://www.linkedin.com/oauth/v2/accessToken, and reads the profile from https://api.linkedin.com/v2/userinfo.

Prerequisites

  • A LinkedIn account and a LinkedIn Company Page (LinkedIn requires one to create an app).
  • Your Faable Auth domain ({YOUR_FAABLEAUTH_NAME}.auth.faable.link or your custom domain).

Find your redirect URI

In the Faable Dashboard, go to Auth β†’ Connections β†’ Create β†’ Social and pick LinkedIn. Copy the Callback URL shown in the form β€” it is https://{YOUR_DOMAIN}/callback. With a custom domain both hosts are listed; register both if your apps start logins on either.

Register the app with LinkedIn

  1. In the LinkedIn Developer PortalΒ , click Create app and link it to your Company Page.
  2. On the Products tab, add Sign In with LinkedIn using OpenID Connect. Without it, the openid profile email scopes are rejected.
  3. On the Auth tab, add the Callback URL under Authorized redirect URLs for your app.
  4. On the same tab, copy the Client ID and Primary Client Secret.

Create the connection in Faable Auth

FieldValue to Provide
NameAn identifier such as linkedin. Shown in the dashboard and logs.
Client IDThe LinkedIn Client ID.
Client secretThe LinkedIn Primary Client Secret.
ScopesComma-separated. Leave empty for the default openid profile email.
EnabledOn to offer it on the login screen right away.

The endpoints are preconfigured; you don’t enter them.

Scopes

The default scope is openid profile email, which is everything the OpenID Connect product grants. Other LinkedIn scopes belong to separate products that need LinkedIn’s approval.

User profile mapping

Faable user fieldSource on the userinfo responseNotes
idsub
namename, else given_name + family_name, else preferred_username
given_namegiven_name
family_namefamily_name
emailemail
email_verifiedemail_verified, only when exactly trueAttested β€” LinkedIn returns it.
picturepicture

Identities are keyed by the LinkedIn sub plus the connection, never by email. Because LinkedIn vouches for the address, the user is created with email_verified: true. A LinkedIn login never merges into an existing account that happens to have the same email β€” it is a separate user.

Trigger a login

Pass connection=<connection id or name> on /authorize to skip the login screen:

https://{YOUR_DOMAIN}/authorize?client_id={YOUR_CLIENT_ID}&response_type=code&redirect_uri={YOUR_APP_CALLBACK}&scope=openid%20profile%20email&state={RANDOM_STATE}&connection=linkedin

Without connection, LinkedIn appears as an option on the hosted login screen.

Troubleshooting

SymptomLikely cause
The redirect_uri does not matchThe Callback URL isn’t in Authorized redirect URLs, or differs in any character.
unauthorized_scope_errorThe Sign In with LinkedIn using OpenID Connect product isn’t added to the app.
Cannot fetch accessTokenClient ID / Client Secret mismatch, or the secret was regenerated in LinkedIn.

Last updated on