赞
踩
授权代码流程包括以下步骤:
如果您刚刚开始,请创建一个新的应用程序。
如果您有现有应用程序,请选择它以修改其设置。
选择应用程序后,单击导航中的“Auth”链接以查看应用程序的凭据并配置服务器的回调URL。为了确保安全的身份验证过程并防止欺诈性交易,LinkedIn仅与您已识别为受信任的URL进行通信。
备注
网址必须是绝对的。例如https://example.com/auth/callback,不是/auth/callback。
URL参数被忽略。例如,https://example.com/?id=1 与…相同 https://example.com/。
网址不能包含#。例如,https://example.com/auth/callback#linkedin无效。
重定向网址
每个应用程序都分配有唯一的客户端ID(也称为使用者密钥或API密钥)和客户端密钥。记下这些值,因为它们必须集成到配置文件或应用程序的实际代码中。
重要
您的客户端密钥保护您的应用程序的安全性,因此请务必确保其安全!不要与任何人分享您的客户秘密价值,包括将其发布在支持论坛以获取有关您的应用程序的帮助。
要申请授权代码,您必须将会员的浏览器定向到LinkedIn的OAuth 2.0授权页面,其中该成员接受或拒绝您的应用程序的权限请求。
请求完成后,会出现以下情况之一:
请求连接:
GET https://www.linkedin.com/oauth/v2/authorization
请求参数:
参数 | 描述 | 必须 |
---|---|---|
response_type | 该字段的值应始终为: code | YES |
client_id | 注册应用程序时生成的API密钥值。 | Yes |
redirect_uri | 您的用户在授权后发回的URI。此值必须与应用程序配置中定义的OAuth 2.0授权重定向URL之一匹配。例如,https://www.example.com/auth/linkedin。 | Yes |
state | 您选择的唯一字符串值很难猜到。用于防止CSRF。例如,state=DCEeFWf45A53sdfKef424。 | No |
scope | URL编码,以空格分隔的应用程序代表用户请求的成员权限列表。必须明确要求这些。例如,scope=r_liteprofile%20r_emailaddress%20w_member_social。有关其他信息,请参阅应用程序开发的权限和最佳实践。 | Yes |
以前可以通过开发人员门户将范围设置为默认值,而不是在此步骤中明确请求它们。现在必须在请求授权代码时明确请求它们。
举例:
GET https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id={your_client_id}&redirect_uri=https%3A%2F%2Fdev.example.com%2Fauth%2Flinkedin%2Fcallback&state=fooobar&scope=r_liteprofile%20r_emailaddress%20w_member_social
响应:
您的申请已获批准
通过提供有效的LinkedIn凭据并单击“ 允许”,该成员批准您的应用程序访问其成员数据并代表他们与LinkedIn交互的请求。此批准指示LinkedIn将成员重定向到您在redirect_uri参数中定义的回调URL 。
附加了redirect_uri两个重要的URL参数,您需要从请求中读取:
在使用授权代码之前,应用程序应确保state参数中返回的state值与原始授权代码请求中的值相匹配。这可以确保您处理真实成员而不是恶意脚本。如果状态值不匹配,您很可能是CSRF攻击的受害者,您的应用程序应该返回401 Unauthorized错误代码作为响应。
申请被拒绝
如果成员选择取消,或者请求因任何原因失败,则会将客户端重定向到您的redirect_uri回调URL,并附加以下附加查询参数:
下一步是使用上一步中的授权代码为您的应用程序获取访问令牌。要执行此操作,请使用以下Content-Type标头发出以下HTTP POST请求x-www-form-urlencoded:
POST https://www.linkedin.com/oauth/v2/accessToken
请求参数:
参数 | 描述 | 必须 |
---|---|---|
grant_type | 该字段的值应始终为: authorization_code | YES |
code | 您在步骤2中收到的授权码。 | YES |
redirect_uri | 与redirect_uri您在上一步中传递的值相同。 | YES |
client_id | 步骤1中生成的客户端ID值。 | YES |
client_secret | 步骤1中生成的密钥值。 | YES |
举例
POST /oauth/v2/accessToken HTTP/1.1
Host: www.linkedin.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code={authorization_code_from_step2_response}&redirect_uri=hhttps%3A%2F%2Fdev.example.com%2Fauth%2Flinkedin%2Fcallback&client_id={your_client_id}&client_secret={your_client_secret}
访问令牌响应
成功的访问令牌请求返回包含以下字段的JSON对象:
访问令牌范围和生命周期
访问令牌保持有效,直到expires_inAPI响应中字段中指示的秒数为止。只要请求相同的范围,您就可以在多个客户端(浏览器或设备)上浏览OAuth流并同时持有多个有效的访问令牌。如果请求的范围与先前授予的范围不同,则所有先前的访问令牌都将失效。
获得访问令牌后,您可以通过Authorization在对LinkedIn API的HTTP调用中包含标头,代表该成员开始进行经过身份验证的API请求。
举例:
GET /v2/me HTTP/1.1
Host: api.linkedin.com
Connection: Keep-Alive
Authorization: Bearer {access_token}
处理无效令牌
如果使用无效令牌进行API调用,您将收到401 Unauthorized服务器的响应,并且您必须重新生成令牌。由于以下原因,令牌可能无效:
备注
500 Internal Server Error如果在验证访问令牌时存在下游故障,则返回A.
为了保护成员的数据,LinkedIn不会生成长期访问令牌。确保您的应用程序在到期前刷新访问令牌,以避免不必要地再次通过授权过程发送您的应用程序用户。
刷新令牌
刷新访问令牌是一种无缝的用户体验。要刷新访问令牌,请再次执行授权过程以获取新令牌。但是,此时,在刷新工作流程中,如果满足以下条件,则会绕过授权屏幕并将成员重定向到您的回调URL:
程序化刷新令牌可用于一组有限的合作伙伴。如果已为您的应用程序启用此功能,请参阅程序化刷新令牌以获取说明。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。