next-auth
Version:
Authentication for Next.js
46 lines (41 loc) • 2.48 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = LinkedIn;
function LinkedIn(options) {
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",
userinfo: {
url: "https://api.linkedin.com/v2/me",
params: {
projection: `(id,localizedFirstName,localizedLastName,profilePicture(displayImage~digitalmediaAsset:playableStreams))`
}
},
async profile(profile, tokens) {
var _emailData$elements, _emailData$elements$, _emailData$elements$$, _profile$profilePictu, _profile$profilePictu2, _profile$profilePictu3, _profile$profilePictu4, _profile$profilePictu5, _profile$profilePictu6;
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 === null || emailData === void 0 ? void 0 : (_emailData$elements = emailData.elements) === null || _emailData$elements === void 0 ? void 0 : (_emailData$elements$ = _emailData$elements[0]) === null || _emailData$elements$ === void 0 ? void 0 : (_emailData$elements$$ = _emailData$elements$["handle~"]) === null || _emailData$elements$$ === void 0 ? void 0 : _emailData$elements$$.emailAddress,
image: (_profile$profilePictu = profile.profilePicture) === null || _profile$profilePictu === void 0 ? void 0 : (_profile$profilePictu2 = _profile$profilePictu["displayImage~"]) === null || _profile$profilePictu2 === void 0 ? void 0 : (_profile$profilePictu3 = _profile$profilePictu2.elements) === null || _profile$profilePictu3 === void 0 ? void 0 : (_profile$profilePictu4 = _profile$profilePictu3[0]) === null || _profile$profilePictu4 === void 0 ? void 0 : (_profile$profilePictu5 = _profile$profilePictu4.identifiers) === null || _profile$profilePictu5 === void 0 ? void 0 : (_profile$profilePictu6 = _profile$profilePictu5[0]) === null || _profile$profilePictu6 === void 0 ? void 0 : _profile$profilePictu6.identifier
};
},
options
};
}