Logto LinkedIn 社交登录连接器接入指南:基于 OIDC 的 LinkedIn OAuth 2.0 集成实践 Logto LinkedIn 社交登录连接器接入指南基于 OIDC 的 LinkedIn OAuth 2.0 集成实践【免费下载链接】logto‍ Authentication and authorization infrastructure for SaaS and AI apps, built on OIDC and OAuth 2.1 with multi-tenancy, SSO, and RBAC.项目地址: https://gitcode.com/GitHub_Trending/lo/logto本指南围绕 Logto 官方 LinkedIn 社交登录连接器packages/connectors/connector-linkedin展开讲解如何在 Logto 中启用通过 LinkedIn 账号登录从 LinkedIn Developer 控制台创建应用、配置回调地址与产品权限到在 Logto Admin Console 中填写客户端凭证并最终在登录体验中启用该连接器。读完本文你将掌握该连接器的完整配置流程、三个配置字段的含义与默认行为并能对照仓库源码理解授权链接生成、令牌交换与用户信息获取的底层实现。连接器概述让终端用户用 LinkedIn 账号登录LinkedIn connector 是 Logto 官方的社交登录连接器它基于 LinkedIn 的 OAuth 2.0 认证协议Sign In with LinkedIn使用 OpenID Connect允许终端用户使用自己的 LinkedIn 账号登录你的应用。从连接器元数据看src/constant.ts其标识如下连接器 IDlinkedin-universal目标平台linkedinConnectorPlatform.Universal即全平台通用类型社交连接器ConnectorType.Social支持多语言名称与描述en / zh-CN / tr-TR / ko连接器在 Admin Console 中展示的配置表单formItems包含三个字段clientId必填、clientSecret必填、scope可选多行文本。这与下方配置连接器一节的字段一一对应。第一步在 LinkedIn Developer 控制台创建应用前往 LinkedIn Developers 控制台并使用 LinkedIn 账号登录如果没有账号可先注册一个然后创建应用。步骤 1填写应用详情App Details在创建应用的向导中填写应用名称、公司等信息完成表单并创建应用。步骤 2配置回调 URL进入应用详情页找到Auth选项卡下的OAuth 2.0区域定位字段Authorized redirect URLs for your app应用的授权重定向 URL。在 Logto 场景下该回调地址的格式为${your_logto_endpoint}/callback/${connector_id}例如https://foo.logto.app/callback/${connector_id}。其中connector_id可在 Logto Admin Console 的连接器详情页顶部栏找到。需要说明的是当前仓库中的连接器元数据 ID 为linkedin-universal见 src/constant.ts实际填写时请以 Admin Console 展示的具体连接器 ID 为准。步骤 3添加产品进入Products选项卡添加产品Sign In with LinkedIn using OpenID Connect。只有添加该产品后应用才具备 OIDC 认证能力Logto 连接器才能完成授权码换取令牌及用户信息读取。第二步在 Logto 中配置连接器在 Logto 的连接器配置中从应用的Auth选项卡下的Application credentials应用凭证区域获取以下值并填写clientId应用App的 Client ID。clientSecret应用的主客户端密钥Primary Client Secret。此外还有一个可选字段scope以空格分隔的 OIDC scope 列表。如果未提供连接器使用默认 scopeopenid profile email该默认值定义于 src/constant.ts。配置类型Config types连接器接受的配置项及其类型如下名称类型是否必填说明clientIdstring是LinkedIn 应用的 Client IDclientSecretstring是LinkedIn 应用的主客户端密钥scopestring否空格分隔的 OIDC scope默认openid profile email上述约束与源码中的配置校验器完全一致src/types.ts 通过 zod 定义了linkedInConfigGuard其中clientId、clientSecret为必填字符串scope可选。每次连接器执行授权或换取用户信息前都会用该 guard 校验配置见 src/index.ts。底层原理从源码看连接器如何工作连接器实现了 Logto 社交连接器接口SocialConnector定义见 packages/toolkit/connector-kit/src/types/social.ts核心包含getAuthorizationUri与getUserInfo两个函数见 src/index.ts。授权 URL 的生成getAuthorizationUri按以下参数拼接授权链接并跳转到 LinkedIn 授权端点https://www.linkedin.com/oauth/v2/authorizationresponse_typecode使用授权码模式client_id取自配置的clientIdredirect_uri由 Logto 运行时注入的重定向地址scope优先使用调用方传入的 scope其次使用配置中的scope兜底使用默认值openid profile emailstate防 CSRF 的状态参数。同时redirectUri会被写入连接器会话setSession供后续换取令牌时取回使用。授权码换取访问令牌当 LinkedIn 将用户重定向回回调地址并携带code后getUserInfo会先从会话中取出redirectUri然后调用getAccessToken见 src/index.ts以application/x-www-form-urlencoded表单形式向令牌端点https://www.linkedin.com/oauth/v2/accessToken发起 POST 请求携带grant_typeauthorization_code、code、redirect_uri、client_id、client_secret五个参数并设置 5 秒超时defaultTimeout 5000见 src/constant.ts。响应需包含access_token字段由accessTokenResponseGuard校验。用户信息获取与错误处理拿到access_token后连接器以Authorization: Bearer ${access_token}请求用户信息端点https://api.linkedin.com/v2/userinfo并用userInfoResponseGuard校验响应结构sub、name、email、picture其中后三者可为空见 src/types.ts最终组装成 Logto 统一的SocialUserInfo以sub作为用户 ID并透传name、email、picture与原始响应rawData。值得注意的错误处理细节当令牌端点或用户信息端点返回 HTTP 401 时连接器抛出SocialAccessTokenInvalid错误表示访问令牌无效或已过期其他 HTTP 错误则包装为通用错误见 src/index.ts。另外仓库 src/utils.ts 内置了 PKCE 的code_verifier/code_challenge生成工具函数但从当前实现看授权请求并未携带code_challenge参数可推断该工具暂为预留能力。测试用例验证连接器的行为由 Vitest 单测覆盖src/index.test.ts可运行pnpm test见 package.json验证getAuthorizationUri校验默认 scope 下生成的授权 URL 参数response_typecodeclient_id...redirect_uri...scopeopenidprofileemailstate...并验证传入自定义 scope 时 URL 中 scope 被替换为自定义值getAccessToken通过 nock mock 令牌端点验证用 code 能换回access_tokengetUserInfomock 令牌端点与用户信息端点后验证返回的SocialUserInfo包含id、name、email、picture与rawData且当用户信息端点返回 500 时抛出错误。测试中的默认 mock 配置src/mock.ts只包含clientId与clientSecret与线上仅需这两个必填字段一致。第三步验证连接器并启用完成上述两步配置后即大功告成。此时 LinkedIn 连接器已可供终端用户使用接下来只需在 Logto 的登录体验Sign-in Experience设置中启用该社交登录连接器用户便可在登录页看到 LinkedIn 登录入口点击后经 LinkedIn 授权、回调最终以 LinkedIn 账号身份进入你的应用。启用社交连接器的具体操作可参见 Logto 文档中的社交连接器启用指南Enable the connector in the sign-in experience本文不再展开。参考与延伸关于 Sign in with LinkedIn 的官方协议说明可查阅 Microsoft 的 LinkedIn 开发者文档Auth 选项卡中clientId/clientSecret的位置、OIDC 产品的使用约束均以该文档为准。若需了解 Logto 社交连接器的通用接口约定getAuthorizationUri、getUserInfo、可选的令牌存储相关函数等可继续阅读 packages/toolkit/connector-kit/src/types/social.ts。如需对比其他社交连接器的实现差异可在 packages/connectors 目录下查看各连接器的 README 与源码。【免费下载链接】logto‍ Authentication and authorization infrastructure for SaaS and AI apps, built on OIDC and OAuth 2.1 with multi-tenancy, SSO, and RBAC.项目地址: https://gitcode.com/GitHub_Trending/lo/logto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考