OAuth Field Guide
Researched guide · 2026-10-28

LinkedIn

www.linkedin.com · Social media · for: AI agent publishes posts on behalf of a member and, where approved, a company page.

High frictionPartner / program gatedwhy this rating →
Do this next

Have your Company Page super admin ready, create the developer app, and add 'Sign In with LinkedIn using OpenID Connect' and 'Share on LinkedIn' to ship member posting now. In parallel, create a second, empty app and submit the Community Management API Development tier request so the company-page review clock starts.

Your path at a glance

Prepare
Register
Configure OAuth
Test
Review
Launch
Customer
Agent
You
Provider
7wait Unknown
Customer admin
Milestones
◆ Works for you
20 min – 1 h work
no wait
◆ Any customer
16 h – 56 h work
Unknown wait
agent can do you agent prepares, you finish assumedClick a step to jump to it.

Watch out for

Before you start

Steps

Prepare

  1. 1Line up the Company Page, legal entity details and privacy policyYouopen ↗details →

Register the app

  1. 2Create the developer appYouopen ↗details →
  2. 3Verify the app with your Page super adminYouopen ↗details →

Test with your account

  1. 6Post as yourselfAgent prepares, you finishopen ↗details →

Review & verification

  1. 7Apply for Community Management API (Development tier)Provider reviewsopen ↗details →
  2. 8Build company-page posting within the Development tier capsAgent can doopen ↗details →
  3. 9Record the screencast and apply for Standard tierYouopen ↗details →

Customer-side setup

  1. 11Customer connects and has the right Page roleCustomer admindetails →

Copy & paste

Scopes to request
openid profilew_member_socialw_organization_socialr_organization_socialrw_organization_admin
Developer console
https://www.linkedin.com/developers/apps
OAuth docs
https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow
Authorize URL
https://www.linkedin.com/oauth/v2/authorization
Token URL
https://www.linkedin.com/oauth/v2/accessToken
Discovery
https://www.linkedin.com/oauth/.well-known/openid-configuration
Prompt for your coding agent
Show prompt
Add LinkedIn posting to this codebase so an AI agent can publish posts for a connected member and, when our app is approved for the Community Management API, for a company Page.

Requirements (as of Oct 2026):
- OAuth 2.0 authorization-code flow (web, confidential client). Authorize: https://www.linkedin.com/oauth/v2/authorization. Token: POST https://www.linkedin.com/oauth/v2/accessToken (application/x-www-form-urlencoded, include client_secret). Use a random 'state' and verify it.
- Scopes from env LINKEDIN_SCOPES. Member mode is 'openid profile w_member_social'; Page mode adds 'w_organization_social r_organization_social'. Changing scopes invalidates a member's old tokens, so store the granted scope string per connection.
- After token exchange, GET https://api.linkedin.com/v2/userinfo and store sub. Member author URN = urn:li:person:{sub}.
- Store access_token, expires_at (now + expires_in; normally 60 days), and refresh_token plus refresh_token_expires_at ONLY if present (most apps don't get them). Encrypt at rest; allow 1000+ char tokens.
- If refresh_token exists, refresh via grant_type=refresh_token before expiry. Never assume refresh extends the 365-day refresh TTL. Otherwise, mark the connection 'expiring' 7 days before expires_at and email a reconnect link.
- Posting: POST https://api.linkedin.com/rest/posts with headers Authorization: Bearer, Linkedin-Version: ${LINKEDIN_API_VERSION} (YYYYMM), X-Restli-Protocol-Version: 2.0.0, Content-Type: application/json. Body: {author, commentary, visibility:'PUBLIC', distribution:{feedDistribution:'MAIN_FEED', targetEntities:[], thirdPartyDistributionChannels:[]}, lifecycleState:'PUBLISHED', isReshareDisabledByAuthor:false}. Read the post URN from the x-restli-id response header.
- Errors: 401 means reconnect; 403 ACCESS_DENIED means a missing scope or Page role (ADMINISTRATOR/CONTENT_ADMIN/DIRECT_SPONSORED_CONTENT_POSTER) and should be shown clearly; 429 means exponential backoff plus a per-member daily counter (assume 150/day for Share on LinkedIn, 100/day per member and 500/day per app in Community Management Development tier).
- Compliance: don't persist LinkedIn member data (commenter profiles, comments) longer than 24-48 h, and never write it to long-term agent memory or embeddings.

Deliverables: connect/callback routes, a token store, a LinkedInClient.createPost/deletePost, an expiry-reminder job, and unit tests with mocked HTTP. Read all config from the .env template and don't hardcode secrets.
.env template
Show bash
LINKEDIN_CLIENT_ID=your-client-id
LINKEDIN_CLIENT_SECRET=your-client-secret
LINKEDIN_REDIRECT_URI=https://app.example.com/api/linkedin/callback
# Member mode (self-serve). Add 'w_organization_social r_organization_social' only on the Community Management-approved app.
LINKEDIN_SCOPES="openid profile w_member_social"
# YYYYMM; supported for ~1 year; bump regularly
LINKEDIN_API_VERSION=202610
TOKEN_ENCRYPTION_KEY=generate-a-32-byte-random-key
Create a member post (curl)
Show bash
curl -i -X POST 'https://api.linkedin.com/rest/posts' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Linkedin-Version: $LINKEDIN_API_VERSION" \
  -H 'X-Restli-Protocol-Version: 2.0.0' \
  -H 'Content-Type: application/json' \
  --data '{
    "author": "urn:li:person:REPLACE_WITH_SUB",
    "commentary": "Test post from our agent (will be deleted)",
    "visibility": "CONNECTIONS",
    "distribution": {"feedDistribution": "MAIN_FEED", "targetEntities": [], "thirdPartyDistributionChannels": []},
    "lifecycleState": "PUBLISHED",
    "isReshareDisabledByAuthor": false
  }'
# 201 Created; post URN is in the x-restli-id response header
Token exchange (TypeScript sketch)
Show typescript
export async function exchangeLinkedInCode(code: string) {
  const res = await fetch("https://www.linkedin.com/oauth/v2/accessToken", {
    method: "POST",
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: new URLSearchParams({
      grant_type: "authorization_code",
      code,
      client_id: process.env.LINKEDIN_CLIENT_ID!,
      client_secret: process.env.LINKEDIN_CLIENT_SECRET!,
      redirect_uri: process.env.LINKEDIN_REDIRECT_URI!,
    }),
  });
  const t = await res.json();
  if (!res.ok) throw new Error(`${t.error}: ${t.error_description}`);
  const now = Date.now();
  return {
    accessToken: t.access_token as string,
    expiresAt: new Date(now + t.expires_in * 1000),
    scope: t.scope as string,
    // Present only if LinkedIn enabled programmatic refresh tokens for this app
    refreshToken: (t.refresh_token as string | undefined) ?? null,
    refreshExpiresAt: t.refresh_token_expires_in ? new Date(now + t.refresh_token_expires_in * 1000) : null,
  };
}

Why & details

The reasoning, evidence and sources behind everything above. Hover a badge to see its sources.

The full picture

Partner / program gated

Posting as a member is self-serve and works within the hour (Share on LinkedIn grants w_member_social). Posting as a company page requires the vetted Community Management API: a legal-entity check, a Page-verified app, a capped Development tier, then a screencast review for Standard tier with no published timeline. Self-serve tokens last 60 days with no programmatic refresh, so an always-on agent needs a plan for re-consent or for getting refresh-token access.

Basic sign-in and member posting are open products anyone can add. The permission that makes a company-page agent useful (w_organization_social) only comes with the Community Management API. That API is a 'Vetted Product' that LinkedIn approves at its discretion ('a partner might not be upgraded even if they meet these minimum requirements'), with a rate-capped Development tier and a separately reviewed Standard tier. There's no per-customer install, so it isn't tenant-scoped.

Rating: Audits, partner approval or multi-week reviews that you can't speed up.

Working with your own account
20 min – 1 h hands-on · no wait

You have a LinkedIn account and a Company Page you (or a reachable super admin) control. You create an app and add the self-serve 'Sign In with LinkedIn using OpenID Connect' and 'Share on LinkedIn' products. That's enough to post as yourself.

Any customer can connect
16 h – 56 h hands-on · unknown

Member posting is production-ready as soon as Share on LinkedIn is added, limited by rate caps (150 requests per member per day). Company-page posting without caps needs Community Management API Development tier approval, a full integration, then Standard tier approval after a screencast review.

What affects your setup

Before you start — why each matters

How well this guide is backed

6 tested43 source-backed0 community-reported1 uncertain· Well evidenced (98% backed)

Step details

  1. 1Line up the Company Page, legal entity details and privacy policy↑ back to step

    Confirm who is super admin of your company's LinkedIn Page and get a business email and a public privacy policy URL ready. Decide early whether you need company-page posting, because that commits you to the Community Management API review track.

    👤 Why you: A product/business judgement only you can make

    🤖 What an agent can do: Draft the privacy-policy section on LinkedIn data use (24 h/48 h retention, no export) and a one-paragraph use-case description for the access forms.

    https://www.linkedin.com/help/linkedin/answer/a548360/associate-an-app-with-a-linkedin-page?lang=en ↗
  2. 2Create the developer app↑ back to step

    In the Developer Portal, create an app: name (no LinkedIn marks), associated LinkedIn Page, privacy policy URL and logo. On the Auth tab, add absolute redirect URLs (no '#'), for example https://app.example.com/api/linkedin/callback, and copy the Client ID and Secret.

    👤 Why you: Needs your logged-in console session (2FA/CAPTCHA)

    🤖 What an agent can do: Prepare the exact field values and the redirect URL list, then put the client ID and secret into the .env template once a person pastes them.

    https://www.linkedin.com/developers/apps/new ↗
  3. 3Verify the app with your Page super admin↑ back to step

    Go to Settings > Verify > Generate URL and send the URL to the Page super admin. They have 30 days to approve. Community Management vetting checks this.

    👤 Why you: Needs your logged-in console session (2FA/CAPTCHA)

    https://www.linkedin.com/help/learning/answer/a1665329 ↗
  4. 4Add the self-serve products↑ back to step

    On the Products tab, add 'Sign In with LinkedIn using OpenID Connect' (openid, profile, email) and 'Share on LinkedIn' (w_member_social). They're open permissions with no review.

    👤 Why you: Needs your logged-in console session (2FA/CAPTCHA)

    🤖 What an agent can do: None in the portal. Afterwards, check that the Auth tab lists the expected scopes.

    https://www.linkedin.com/developers/apps ↗
  5. Use the authorization-code flow with state, the scope 'openid profile w_member_social', and a token exchange that includes client_secret. Store access_token and expires_at (60 days). Get 'sub' from /v2/userinfo. Create posts with POST https://api.linkedin.com/rest/posts, author urn:li:person:{sub} for members or urn:li:organization:{id} for Pages, sending the Linkedin-Version and X-Restli-Protocol-Version: 2.0.0 headers.

    🤖 What an agent can do: Write the connect/callback routes, an encrypted token store with expiry tracking, and a postToLinkedIn(author, text, media?) helper. Uploads go through the Images and Videos APIs first; article posts need an explicit thumbnail, title and description because LinkedIn doesn't scrape URLs.

    https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/posts-api ↗
  6. 6Post as yourself↑ back to step

    Connect your own LinkedIn account and publish a CONNECTIONS-visibility test post, then delete it. Check the Analytics tab for your actual rate limits.

    👤 Why you: Needs your logged-in console session (2FA/CAPTCHA)

    🤖 What an agent can do: Write an end-to-end script that creates and then deletes (DELETE /rest/posts/{urn}) a test post, and logs the response headers and x-restli-id.

    https://www.linkedin.com/developers/apps ↗
  7. 7Apply for Community Management API (Development tier)↑ back to step

    Request it on a new developer app that has no other API products; the option is greyed out otherwise. Fill in legal name, address, website, privacy policy and use case, and verify the business email. If you're rejected, you must create another new app to re-apply.

    👤 Why you: Waiting on the provider's reviewers

    🤖 What an agent can do: Draft the form answers, and check them against the restricted-use-cases page (no social-feed display, no CRM enrichment, no sales or recruiting use of member data).

    https://learn.microsoft.com/en-us/linkedin/marketing/community-management-app-review ↗
  8. 8Build company-page posting within the Development tier caps↑ back to step

    Implement the Page picker, w_organization_social posting, and display of comments on the Page's posts, all within 500 calls per app and 100 per member per day with no BATCH_GET. You have 12 months from provisioning.

    🤖 What an agent can do: Implement org posting, comment display and a client-side rate budget (500 per app per day). Avoid BATCH_GET.

    https://learn.microsoft.com/en-us/linkedin/marketing/increasing-access ↗
  9. 9Record the screencast and apply for Standard tier↑ back to step

    Record a high-resolution, downloadable, narrated screencast showing the OAuth flow, posting to a Page, how comments are displayed, and which commenter profile fields are shown. Submit it with a company/product overview and reviewer test credentials, via My Apps > Products.

    👤 Why you: Record a demo video

    🤖 What an agent can do: Write the screencast script and shot list mapped one-to-one to the review checklist, and seed a demo account with test data.

    https://learn.microsoft.com/en-us/linkedin/marketing/community-management-app-review ↗
  10. Track each member's 60-day expiry and ask them to reconnect before it lapses, or use refresh tokens if LinkedIn enabled them. Bump Linkedin-Version at least yearly; the 202511 version sunsets November 16, 2026. Add a business email to the app so deprecation notices reach you.

    🤖 What an agent can do: Add a daily job that emails members whose tokens expire within 7 days, plus a CI check that fails when LINKEDIN_API_VERSION is more than 10 months old.

    https://learn.microsoft.com/en-us/linkedin/marketing/versioning ↗
  11. 11Customer connects and has the right Page role↑ back to step

    Each customer member signs in and approves the scopes. To post as their company Page, a Page admin must first grant them ADMINISTRATOR, CONTENT_ADMIN or DIRECT_SPONSORED_CONTENT_POSTER, otherwise posting returns 403 ACCESS_DENIED.

    👤 Why you: Your customer's admin must act

    🤖 What an agent can do: Show a clear message on 403 explaining which Page role is missing, and only list Pages the member can actually post to.

Gotchas explained

  • BlockerCompany-page posting isn't self-serve

    w_organization_social comes only with the Community Management API (or Advertising API). The Development tier caps you at 500 calls per app per day, which is a handful of customers.

    Fix: Launch with member posting first and apply for Community Management Development tier on a fresh app immediately. Budget for the Standard tier screencast review.

  • WarningSelf-serve apps get no refresh tokens, so the agent goes dark after 60 days

    Programmatic refresh tokens are limited to approved partners. With Share on LinkedIn alone, every member token dies at 60 days. Re-running the authorize flow is silent only if the member is logged in to linkedin.com in that browser and the old token hasn't expired yet, which doesn't help a backend agent.

    Fix: Track expires_at and send members a one-click reconnect before day 60. Ask whether refresh tokens are enabled once you're Community Management-approved, and if they are, still plan for yearly re-consent.

  • WarningOne app, one shot

    Community Management must be requested on a new app with no other products. If either tier is rejected, you can't re-apply with that app and must create a new one and start at Development tier again.

    Fix: Read the review requirements and restricted use cases before submitting. Keep your Sign-in/Share app separate from the Community Management app until approved.

  • WarningChanging scopes logs everyone out

    If you request a different scope set than a member previously granted, all of that member's previous access tokens are invalidated.

    Fix: Fix the scope set per app before launch. When you add Page scopes later, migrate members deliberately with a reconnect prompt.

  • WarningUnversioned or stale calls fail

    /rest APIs require Linkedin-Version. Versions are supported for about a year, and missing or deprecated headers return errors. 202511 sunsets November 16, 2026, and older versions are already gone.

    Fix: Pin the version in config, upgrade on a schedule, and watch the recent-changes page.

  • WarningStrict data-retention rules constrain agent memory

    Member social activity can be stored for at most 48 h and most profile data for 24 h. Member data can't be combined with other data, exported to customers, or used for sales, recruiting or CRM enrichment.

    Fix: Don't put LinkedIn comments or profiles into long-term agent memory or vector stores. Store only your own post IDs and content, and set TTLs on cached member data.

  • InfoTight per-member caps

    Share on LinkedIn allows 150 requests per member per day. Other limits are unpublished and visible only in the app's Analytics tab after you've called the endpoint. Over-limit calls get 429, and alerts arrive 1–2 h late.

    Fix: Count calls per member, back off on 429, and make one test call to each endpoint so its limit shows up in Analytics.

  • InfoOIDC issuer differs from the docs

    The live discovery document's issuer is https://www.linkedin.com/oauth, while the OIDC doc sample shows https://www.linkedin.com. ID-token validation hardcoded from the docs can reject valid tokens.

    Fix: Configure your OIDC client from the discovery URL, and validate 'iss' against the value of an actual ID token.

Why each scope

ScopeWhy you need itTierEvidence
openid profileIdentify the member and get their 'sub', which becomes the author urn:li:person:{sub} on posts.basic
w_member_socialCreate posts (and comments or likes) as the authenticated member. Self-serve through the 'Share on LinkedIn' product, and also bundled with the Community Management API.sensitive
w_organization_socialPost as a company page. The member must hold ADMINISTRATOR, CONTENT_ADMIN or DIRECT_SPONSORED_CONTENT_POSTER on that Page. Available only via the Community Management API (or the Advertising API).restricted
r_organization_socialOptional. Read the Page's posts and engagement, for example to confirm a post published or to avoid duplicates. Same role restrictions as w_organization_social.restricted
rw_organization_adminOptional. Look up which Pages the member administers so the agent can offer a Page picker. Restricted to Pages where the member is ADMINISTRATOR.restricted

Reference facts

What we verified — and what we couldn't

Live probes (no credentials)

  • ✓discovery https://www.linkedin.com/oauth/.well-known/openid-configurationHTTP 200; issuer https://www.linkedin.com/oauth; authorize https://www.linkedin.com/oauth/v2/authorization; PKCE methods: not advertised[P1]
  • ✓authorize https://www.linkedin.com/oauth/v2/authorizationHTTP 200; serves an HTML login/consent page; → endpoint is live (client validation may happen after login)[P2]
  • ✓token https://www.linkedin.com/oauth/v2/accessTokenHTTP 401; error "invalid_request: Unable to retrieve access token: authorization code not found"; → token endpoint is live and rejects a bogus code[P3]
  • ✓page https://www.linkedin.com/developers/appsHTTP 200; title "Developers | LinkedIn"[P4]
  • ✓page https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flowHTTP 200; title "LinkedIn 3-Legged OAuth Flow - LinkedIn | Microsoft Learn"[P5]

Open questions

  • Does POST /rest/posts accept a token from a self-serve Share on LinkedIn app, or must self-serve apps use the legacy /v2/ugcPosts?
    The Share on LinkedIn doc (last updated 2023) still shows /v2/ugcPosts, while the Posts API doc says it 'replaces the ugcPosts API' and lists w_member_social. Only a vendor blog reports a successful self-serve /rest/posts call (September 2026).
    To resolve: With your own token, create and then delete a CONNECTIONS-visibility post via /rest/posts using Linkedin-Version 202610.
  • Do Community Management API–approved apps receive programmatic refresh tokens?
    The refresh-token doc says they're for 'all approved Marketing Developer Platform (MDP) partners' and elsewhere 'a limited set of partners'. It doesn't say whether Community Management Development or Standard tier counts.
    To resolve: After approval, check whether the token response includes refresh_token and refresh_token_expires_in. Otherwise ask Developer Support.
  • How long do the Development and Standard tier reviews take?
    No timelines are published, approval is discretionary, and a May 2026 changelog note mentions access requests 'expired (after 21 days)'.
    To resolve: Apply as early as possible and follow up through the Developer Support portal. Record actual turnaround to update this guide.
  • After Community Management approval, can the same app also carry Sign In with LinkedIn (OpenID Connect)?
    The FAQ only says to request Community Management on apps with no other API products. It doesn't say whether products can be added after approval.
    To resolve: Ask Developer Support before you design a single-app architecture. Default to two apps (sign-in/member posting vs Page management).
  • Is a Company Page required just to create any developer app?
    LinkedIn's help says a Page association is required 'for certain functionality and products'. Community guides say the create-app form requires a Page. We didn't log in to check.
    To resolve: Open https://www.linkedin.com/developers/apps/new while logged in and check whether the LinkedIn Page field is mandatory.

Ask the provider

A ready-to-send message built from the open questions above.

Send to
No contact channel found — check https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow for developer support
Subject
OAuth integration questions — LinkedIn
Hi LinkedIn developer support team,

We're building an integration where AI agent publishes posts on behalf of a member and, where approved, a company page. Before we register an OAuth app and launch to customers, we couldn't find answers to the following in your documentation:

1. Does POST /rest/posts accept a token from a self-serve Share on LinkedIn app, or must self-serve apps use the legacy /v2/ugcPosts?
   (What we found: The Share on LinkedIn doc (last updated 2023) still shows /v2/ugcPosts, while the Posts API doc says it 'replaces the ugcPosts API' and lists w_member_social. Only a vendor blog reports a successful self-serve /rest/posts call (September 2026).)
2. Do Community Management API–approved apps receive programmatic refresh tokens?
   (What we found: The refresh-token doc says they're for 'all approved Marketing Developer Platform (MDP) partners' and elsewhere 'a limited set of partners'. It doesn't say whether Community Management Development or Standard tier counts.)
3. How long do the Development and Standard tier reviews take?
   (What we found: No timelines are published, approval is discretionary, and a May 2026 changelog note mentions access requests 'expired (after 21 days)'.)
4. After Community Management approval, can the same app also carry Sign In with LinkedIn (OpenID Connect)?
   (What we found: The FAQ only says to request Community Management on apps with no other API products. It doesn't say whether products can be added after approval.)
5. Is a Company Page required just to create any developer app?
   (What we found: LinkedIn's help says a Page association is required 'for certain functionality and products'. Community guides say the create-app form requires a Page. We didn't log in to check.)

Could you point us to the right documentation or process — including whether any review or approval is needed before customers outside our own account can connect, and the typical timeline?

Thanks,
[Your name]
[Company · website]

Sources

  1. S1LinkedIn 3-Legged OAuth Flow (Microsoft Learn, updated 2026-05-15)official
  2. S2Refresh Tokens with OAuth 2.0 (Microsoft Learn)official
  3. S3Getting Access to LinkedIn APIs (Microsoft Learn, updated 2026-06-03)official
  4. S4Share on LinkedIn (Microsoft Learn)official
  5. S5Sign In with LinkedIn using OpenID Connect (Microsoft Learn)official
  6. S6Community Management - Overview (Microsoft Learn, li-lms-2026-10)official
  7. S7Increasing Access — Marketing API tiers and permissions (Microsoft Learn, updated 2026-10-19)official
  8. S8Community Management App Review (Microsoft Learn)official
  9. S9LMS API Documentation Versioning (Microsoft Learn, updated 2026-10-14)official
  10. S10LinkedIn API Rate Limiting (Microsoft Learn)official
  11. S11Posts API (Microsoft Learn, li-lms-2026-10)official
  12. S12Restricted Uses of LinkedIn Marketing APIs and Data (Microsoft Learn)official
  13. S13Recent Marketing API Changes (Microsoft Learn, updated 2026-10-19)official
  14. S14Authenticating with OAuth 2.0 for Native Clients (PKCE) (Microsoft Learn)official
  15. S15Associate an app with a LinkedIn Page (LinkedIn Help)official
  16. S16Send an app verification request for a LinkedIn Page (LinkedIn Help)official
  17. S17OpenTweet: LinkedIn API 403 on /rest/posts (reports self-serve app accepted at /rest/posts, Sept 2026)community
  18. T1Probe: GET https://www.linkedin.com/oauth/.well-known/openid-configuration → 200, issuer https://www.linkedin.com/oauth, scopes openid/profile/email, pairwise subjectsprobe
  19. T2Probe: GET authorize with client_id=probe-invalid → HTTP 200 HTML 'The passed in client_id is invalid "probe-invalid"' (no redirect)probe
  20. T3Probe: POST token endpoint with code=bogus → HTTP 401 invalid_request 'authorization code not found'probe
  21. T4Probe: POST token endpoint grant_type=refresh_token with bogus token → HTTP 400 invalid_grant 'The provided authorization grant or refresh token is invalid, expired or revoked.'probe
  22. T5Probe: GET https://api.linkedin.com/rest/posts without token → 401 EMPTY_ACCESS_TOKEN; with bogus Bearer and any/missing Linkedin-Version → 401 INVALID_ACCESS_TOKENprobe
  23. P1Our probe: discovery check on www.linkedin.comprobe
  24. P2Our probe: authorize check on www.linkedin.comprobe
  25. P3Our probe: token check on www.linkedin.comprobe
  26. P4Our probe: page check on www.linkedin.comprobe
  27. P5Our probe: page check on learn.microsoft.comprobe