最近的linkedin发送了一封提醒电子邮件:
重要更新:所有开发人员都需要在2019年3月1日之前迁移到我们的API版本2.0和OAuth 2.0。了解更多
授权后,我正在使用Linkedin Rest API获取用户信息。 旧的v1 API是: https://api.linkedin.com/v1/people/~
此请求必须更改。我试图提出以下要求:
https://api.linkedin.com/v2/me
获取用户基本信息(作为名字和姓氏)
然后:
https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements *(句柄〜))
获取用户电子邮件地址
不幸的是,第一个请求总是返回:
{
"serviceErrorCode": 100,
"message": "Not enough permissions to access: GET /me",
"status": 403
}
我在stackoverflow上进行了很多搜索,很多建议您需要作为合作伙伴进行订阅才能访问v2 api
迁移指南中的LinkedIn表示:
我的开发人员应用程序可以访问v2 API吗?通过LinkedIn开发人员门户创建的任何开发人员应用程序 在2018年12月15日之后将自动访问v2 API。
现有的开发人员应用程序如何?如果您的开发人员应用程序自10月1日以来已成功发出v1 API请求, 2018年,您的开发人员应用程序将自动访问v2 API。
此外,如果我要求使用emailAddress v2 API,我会得到正确的答复...因此,我认为我不需要编写成为合作伙伴的表格。
应该是什么问题?
这里是身份验证和API调用的完整路径:
1)转到身份验证页面以请求权限
window.location.href = "https://www.linkedin.com/oauth/v2/authorization?response_type=code" +
"&client_id=" + linkedin_id + "&redirect_uri=" + redirect_uri +
"&state=" + state + "&scope=r_basicprofile+r_emailaddress"
2)检索访问令牌
request = ("https://www.linkedin.com/oauth/v2/accessToken?grant_type=authorization_code&code=" +
code + "&redirect_uri=" +
redirect_uri + "&client_id="
+ linkedin_id +
"&client_secret=" + linkedin_secret)
response = requests.get(request)
3)检索访问令牌,我们可以请求用户信息始终403
headers = {"Authorization": "Bearer "+token }
get_user = requests.get('https://api.linkedin.com/v2/me', headers=headers)
4)获取user_email 正常工作
get_user_email = requests.get('https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))', headers=headers)
谢谢
答案 0 :(得分:2)
如果只需要名字和姓氏,请尝试使用r_liteprofile
而不是r_basicprofile
答案 1 :(得分:0)
尝试一下:
更改第一步: &scope = r_basicprofile + r_emailaddress进入 &scope = r_liteprofile + r_emailaddress
正在获取r_liteprofile信息 您将获得firstName,lastName,profilePicture,id
答案 2 :(得分:0)
在访问AccessToken请求时,您应该通过'&scope = r_basicprofile + r_emailaddress'
步骤1: AccessToken Requst将类似于
https://www.linkedin.com/oauth/v2/accessToken?grant_type=authorization_code&code={Your code}&redirect_uri={Yourredirect_uri}&client_id={Your client_id}&client_secret={Your client_secret }&scope=r_liteprofile+r_emailaddress
这将返回AccessToken,您必须使用AccessToken再次发出2个请求 1用于电子邮件和个人资料详细信息
步骤2: 电子邮件请求将类似于
https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))&oauth2_access_token={AccessToken You get from step 1}'
步骤3: 基本配置文件请求将像
https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,emailAddress,profilePicture(displayImage~:playableStreams))&oauth2_access_token={AccessToken You get from step 1}'