diff --git a/packages/core/src/providers/linkedin.ts b/packages/core/src/providers/linkedin.ts index 30dc9f9312..f5e4b336d4 100644 --- a/packages/core/src/providers/linkedin.ts +++ b/packages/core/src/providers/linkedin.ts @@ -10,23 +10,11 @@ */ import type { OAuthConfig, OAuthUserConfig } from "./index.js" -interface Identifier { - identifier: string -} - -interface Element { - identifiers?: Identifier[] -} - -export interface LinkedInProfile extends Record { - id: string - localizedFirstName: string - localizedLastName: string - profilePicture: { - "displayImage~": { - elements?: Element[] - } - } +export interface LinkedInProfile { + sub: string + name: string + email: string + picture: string } /** @@ -83,36 +71,10 @@ export default function LinkedIn

( return { id: "linkedin", name: "LinkedIn", - type: "oauth", - authorization: { - url: "https://www.linkedin.com/oauth/v2/authorization", - params: { scope: "r_liteprofile r_emailaddress" }, - }, - token: "https://www.linkedin.com/oauth/v2/accessToken", + type: "oidc", client: { token_endpoint_auth_method: "client_secret_post", }, - userinfo: { - url: "https://api.linkedin.com/v2/me", - params: { - projection: `(id,localizedFirstName,localizedLastName,profilePicture(displayImage~digitalmediaAsset:playableStreams))`, - }, - }, - async profile(profile, tokens) { - const emailResponse = await fetch( - "https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))", - { headers: { Authorization: `Bearer ${tokens.access_token}` } } - ) - const emailData = await emailResponse.json() - return { - id: profile.id, - name: `${profile.localizedFirstName} ${profile.localizedLastName}`, - email: emailData?.elements?.[0]?.["handle~"]?.emailAddress, - image: - profile.profilePicture?.["displayImage~"]?.elements?.[0] - ?.identifiers?.[0]?.identifier, - } - }, style: { logo: "/linkedin.svg", logoDark: "/linkedin-dark.svg",