在领英,我们重视会员数据的完整性和安全性胜于一切。如果您的应用想要访问领英会员的数据和/或代表他们采取行动,则必须获得授权。为了简化流程,领英根据行业标准 OAuth 2.0 协议授予访问权限。
在开始授权之前,可以参考下面的简图理解领英OAuth 2.0验证的原理。如果您已经对OAuth 2.0非常熟悉,可以跳过此图,直接按照此后的步骤操作,向领英发起获授权的 API 调用:
在领英,我们重视会员数据的完整性和安全性胜于一切。如果您的应用想要访问领英会员的数据和/或代表他们采取行动,则必须获得授权。为了简化流程,领英根据行业标准 OAuth 2.0 协议授予访问权限。
在开始授权之前,可以参考下面的简图理解领英OAuth 2.0验证的原理。如果您已经对OAuth 2.0非常熟悉,可以跳过此图,直接按照此后的步骤操作,向领英发起获授权的 API 调用:
第 1 步 — 配置您的领英应用
如果您还没有创建应用,请先创建一个应用。 如果您已创建应用,请选择此应用并修改其设置。
为了避免在授权过程中发生欺诈性交易,我们仅会与您确定为信任端点的网址通信。确保应用的“OAuth 2.0 重定向网址”字段包含一个有效的回调网址,指向为完成部分授权工作流程而负责监听的服务器。
请注意:
第 2 步 — 请求授权代码
妥善配置应用后,您便可请求授权代码。 此授权代码不是您向领英发起调用所用的最终令牌。 您将在 OAuth 2.0 流程最后一步使用此代码交换实际的访问令牌。 此步骤非常关键,因为它表示领英直接向用户保证正为正确的应用授予权限,并按照协定提供对会员领英个人资料的访问权限。
重定向用户
如需请求授权代码,您必须将用户浏览器定向至领英 OAuth 2.0 授权端点。完成请求后,将会发生以下任一种情况:
注意,如果您曾更改应用要求的 scope 权限,则用户需要重新授权,确保他们明确授予此应用代表他们请求的所有权限。
参数 | 说明 | 必填 |
response_type | 此字段值必须为: code | 是 |
client_id | 注册应用时生成的“客户端编号”值。 | 是 |
redirect_uri | 将在授权后向用户发送的地址。此值必须与应用配置中某个定义的 OAuth 2.0 重定向网址匹配。
例如: https://www.example.com/auth/linkedin | 是 |
state | 由您选择且不易被猜中的唯一字符串值。 用于阻止跨站请求伪造攻击。
例如: state=DCEeFWf45A53sdfKef424 | 是 |
scope | 由网址编码组成且限定长度的会员权限列表,表示应用代表用户请求的权限。如果您在调用中未指定范围,我们将使用您在应用配置中定义的默认会员权限。
例如: scope=r_fullprofile%20r_emailaddress%20w_share
| 可选 |
用户体验
重定向后,用户会看到领英授权对话框。 这可以识别您的应用,并概要列出应用请求的特定会员权限。 如有需要,您可在应用配置中更改标志和应用名称。
应用获批准
用户只需提供有效的领英授权,然后单击“允许访问”按钮,即可批准应用访问其会员数据并代表他们与领英互动。根据此批准,领英将用户重定向至您在 redirect_uri 参数中定义的回调网址。
Redirect_uri 中随附两个重要的网址参数,您需从请求中阅读:
code 是您在授权流程后续步骤中与领英交换实际 OAuth 2.0 访问令牌所用的值。鉴于安全原因,授权代码的使用期限极短,必须在收到后立即使用以免其过期。如需请求新的授权代码,您必须重复执行以上所有步骤。
接受授权代码之前,您应确保应用的 state 参数中返回的值与您原始授权代码请求的 state 值相匹配。 这样可确保您与真正的原始用户交流,且没有恶意脚本以某种方式进入授权流程。如果状态值不匹配,说明您可能已受到跨站请求伪造攻击,请在响应中提供 HTTP 401 错误代码。
第 3 步 — 使用授权代码交换访问令牌
参数 | 说明 | 必填 |
grant_type | 此字段值必须为: authorization_code | 是 |
code | 您在第 2 步中获取的授权代码。 | 是 |
redirect_uri | 您在上一步中发送的相同“redirect_uri”值。 | 是 |
client_id | 第 1 步中生成的“API 密钥”值。 | 是 |
client_secret | 第 1 步中生成的“秘密密钥”值。
请按照最佳实践指南处理 client_secret 值。 | 是 |
第 4 步 — 发出获授权的请求
获得访问令牌后,您便可开始代表用户发出获授权的 API 请求。 您只需在向领英 API 发起的 HTTP 调用中,包含一个“Authorization”标头,即可完成此步骤。以下是 HTTP 请求示例,包含具有以下令牌的标头值:
第 5 步 — 刷新访问令牌