我最近集成了 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中文网其他相关文章!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

本文讨论了在浏览器中优化JavaScript性能的策略,重点是减少执行时间并最大程度地减少对页面负载速度的影响。

本文讨论了使用浏览器开发人员工具的有效JavaScript调试,专注于设置断点,使用控制台和分析性能。

将矩阵电影特效带入你的网页!这是一个基于著名电影《黑客帝国》的酷炫jQuery插件。该插件模拟了电影中经典的绿色字符特效,只需选择一张图片,插件就会将其转换为充满数字字符的矩阵风格画面。快来试试吧,非常有趣! 工作原理 插件将图片加载到画布上,读取像素和颜色值: data = ctx.getImageData(x, y, settings.grainSize, settings.grainSize).data 插件巧妙地读取图片的矩形区域,并利用jQuery计算每个区域的平均颜色。然后,使用

本文将引导您使用jQuery库创建一个简单的图片轮播。我们将使用bxSlider库,它基于jQuery构建,并提供许多配置选项来设置轮播。 如今,图片轮播已成为网站必备功能——一图胜千言! 决定使用图片轮播后,下一个问题是如何创建它。首先,您需要收集高质量、高分辨率的图片。 接下来,您需要使用HTML和一些JavaScript代码来创建图片轮播。网络上有很多库可以帮助您以不同的方式创建轮播。我们将使用开源的bxSlider库。 bxSlider库支持响应式设计,因此使用此库构建的轮播可以适应任何

数据集对于构建API模型和各种业务流程至关重要。这就是为什么导入和导出CSV是经常需要的功能。在本教程中,您将学习如何在Angular中下载和导入CSV文件


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

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

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver CS6
视觉化网页开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器