React:LinkedIn 访问令牌的步骤
我最近集成了 LinkedIn API,事实证明它非常简单。任务是从 LinkedIn 检索用户的电子邮件地址。为了实现这一目标,我主要使用了两个端点:
https://api.linkedin.com/oauth/v2/authorization
https://www.linkedin.com/oauth/v2/accessToken
链接
演示
代码库
先决条件
要实现此功能,您需要一个 LinkedIn 应用程序,该应用程序可以通过 LinkedIn 开发人员门户轻松设置。创建后,您的应用程序将提供:
- 客户端 ID:您的应用程序的唯一标识符。
- 客户端密钥:用于您的应用与 LinkedIn 之间的安全通信。
此外,您还需要设置重定向 URL。这是 LinkedIn 在用户批准您的应用后发送授权代码的位置
如何通过 10 步获取 LinkedIn 访问令牌
两个端点,对吗?但要使这一切顺利进行,至少需要 10 个步骤。看一下时序图:
步骤1:用户点击授权按钮。
步骤 2:Web 应用程序将用户重定向到 LinkedIn。
您需要将用户重定向到:
https://api.linkedin.com/oauth/v2/authorization?response_type=code&client_id=${CLIENT_ID}&redirect_uri=${REDIRECT_URI}&scope=profile%20email%20openid
将 CLIENT_ID 和 REDIRECT_URI 替换为您在开发者门户中定义的值。
第 3 步:LinkedIn 要求用户登录
第 4 步:LinkedIn 要求用户授权 Web 应用程序
第 5 步:LinkedIn 将用户发送至重定向 URL。
就我而言,最终的重定向 URL 如下所示:
https://demo.garciadiazjaime.com/linkedin-api-openid-user-info?code=AQSWHfrKRe6Zvr-fSccBQl2FfpxdkPxx6penQgLAFuNWVXviCb2qmtuCdy9czV-vZIqIczV-4UQNcKuRQk1qMgA3c13CdPpGHxdItcpqMuMmJsksxXYLOohcBF7jaAAqA6nKMq6pXsLH5-itSnyGdnWVIDc1v1ynAzckv-DCOn1gP6lkQf8aWu3CM5E79Zoh8PmHS3_eWT0LymNSM7U
注意代码查询参数是如何传递的。这很重要,因为它将在下一步请求访问令牌时使用。
步骤 6:Web 应用程序将代码传递给 Lambda 函数
此处使用 Lambda 函数的原因是下一步涉及请求访问令牌,这需要传递 Client ID 和 Client Secret。由于这些凭据应保持安全,因此此步骤需要在类似后端的环境中处理。
第 7 步:Lambda 函数向 LinkedIn 请求访问令牌
看一下代码:
https://api.linkedin.com/oauth/v2/authorization?response_type=code&client_id=${CLIENT_ID}&redirect_uri=${REDIRECT_URI}&scope=profile%20email%20openid
步骤 8.LinkedIn 将令牌返回给 Lambda 函数
步骤 9. Lambda 函数将令牌返回到 Web 应用程序
步骤 10. Web 应用程序接收令牌
oauth/v2/accessToken 端点的 LinkedIn 响应通常如下所示:
https://demo.garciadiazjaime.com/linkedin-api-openid-user-info?code=AQSWHfrKRe6Zvr-fSccBQl2FfpxdkPxx6penQgLAFuNWVXviCb2qmtuCdy9czV-vZIqIczV-4UQNcKuRQk1qMgA3c13CdPpGHxdItcpqMuMmJsksxXYLOohcBF7jaAAqA6nKMq6pXsLH5-itSnyGdnWVIDc1v1ynAzckv-DCOn1gP6lkQf8aWu3CM5E79Zoh8PmHS3_eWT0LymNSM7U
注意 id_token 如何包含在响应中,这是一个 JWT(JSON Web 令牌)。如果你解码它,你会得到类似这样的东西:
const { code } = JSON.parse(event.body); const config = { grant_type: "authorization_code", code, client_id: LINKEDIN_CLIENT_ID, client_secret: LINKEDIN_CLIENT_SECRET, redirect_uri: LINKEDIN_REDIRECT, }; const response = await fetch(`https://www.linkedin.com/oauth/v2/accessToken`, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", }, body: new URLSearchParams(config), });
它输出的内容包括:
{ access_token:"...access_token...", expires_in: 5183999, scope: "email,openid,profile", token_type: "Bearer", id_token: "eyJ6aXAiOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImQ5Mjk2NjhhLWJhYjEtNGM2OS05NTk4LTQzNzMxNDk3MjNmZiIsImFsZyI6IlJTMjU2In0.eyJpc3MiOiJodHRwczovL3d3dy5saW5rZWRpbi5jb20vb2F1dGgiLCJhdWQiOiI4NmNtemNrN2k2dG5tOCIsImlhdCI6MTczMTg4MDM1MCwiZXhwIjoxNzMxODgzOTUwLCJzdWIiOiJlbTVqVXhDcEh4IiwibmFtZSI6IkphaW1lIEdhcmNpYSBEaWF6IiwiZ2l2ZW5fbmFtZSI6IkphaW1lIiwiZmFtaWx5X25hbWUiOiJHYXJjaWEgRGlheiIsInBpY3R1cmUiOiJodHRwczovL21lZGlhLmxpY2RuLmNvbS9kbXMvaW1hZ2UvdjIvQzU2MDNBUUhnYWc5TVNUUDNGQS9wcm9maWxlLWRpc3BsYXlwaG90by1zaHJpbmtfMTAwXzEwMC9wcm9maWxlLWRpc3BsYXlwaG90by1zaHJpbmtfMTAwXzEwMC8wLzE2NjA5MzcwNTQ2MTg_ZT0yMTQ3NDgzNjQ3JnY9YmV0YSZ0PXpuRWFMUS1vSVRYVl9LT3B5aFZGcDRfUHVLd0JabGx5VGRjNTc3ZDBoWXciLCJlbWFpbCI6ImdhcmNpYWRpYXpqYWltZUBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6InRydWUiLCJsb2NhbGUiOiJlbl9VUyJ9...", };
对于我的用例,电子邮件字段正是我所需要的。现在您已拥有访问令牌,您还可以使用它向 LinkedIn REST API 发出请求,如下所示:
import { jwtDecode } from "jwt-decode"; jwtDecode(jwt);
它将为您提供与 JWT 令牌中基本相同的信息,但现在您拥有访问令牌,您可以使用它来访问 LinkedIn 的任何其他端点。
结论
总体而言,与 LinkedIn 的 RESTful API 集成非常简单。需要记住的一件事是,该过程在客户端和服务器之间分开:客户端负责将用户重定向到 LinkedIn 进行身份验证和授权,而服务器负责与 LinkedIn 的 API 交互并传递 ClientId 和 ClientSecret,而服务器不应该这样做在您的客户端应用程序中公开。
以上是React:LinkedIn 访问令牌的步骤的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

探索前端中类似VSCode的面板拖拽调整功能的实现在前端开发中,如何实现类似于VSCode...
