Rest 关于迁移到Linkedin API 2.0版的问题

Rest 关于迁移到Linkedin API 2.0版的问题,rest,linkedin,linkedin-api,Rest,Linkedin,Linkedin Api,最近linkedin发送了一封提醒电子邮件: 重要更新:所有开发人员都需要在2019年3月1日之前迁移到API的2.0版和OAuth 2.0版。了解更多 我正在使用Linkedin Rest API获取授权后的用户信息。 旧的v1 api是: 查看此处的迁移指南: 必须更改此请求。我试图提出以下要求: 获取用户基本信息(如姓名和姓氏) 然后: *(把手~) 获取用户电子邮件地址的步骤 不幸的是,第一个请求总是返回: { "serviceErrorCode": 100, "m

最近linkedin发送了一封提醒电子邮件:

重要更新:所有开发人员都需要在2019年3月1日之前迁移到API的2.0版和OAuth 2.0版。了解更多

我正在使用Linkedin Rest API获取授权后的用户信息。 旧的v1 api是:

查看此处的迁移指南:

必须更改此请求。我试图提出以下要求:

获取用户基本信息(如姓名和姓氏)

然后:

*(把手~)

获取用户电子邮件地址的步骤

不幸的是,第一个请求总是返回:

{
    "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

此外,如果我询问EmailAddressV2 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) 获取用户电子邮件工作

get_user_email = requests.get('https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))', headers=headers)

谢谢

如果您只需要名字和姓氏,请尝试使用
r\u liteprofile
而不是
r\u basicprofile

第一步的变化: &scope=r_基本配置文件+r_电子邮件地址到 &范围=r_liteprofile+r_电子邮件地址

称之为:

正在获取r_Lite配置文件信息
您将获得firstName、lastName、profilePicture、id

您应该在AccessToken请求时传递“&scope=r\u basicprofile+r\u emailaddress”

步骤1: AccessToken请求将类似于

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
https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))&oauth2_access_token={AccessToken You get from step 1}'
这将返回AccessToken,您必须使用它再发出2个请求 1用于电子邮件和个人资料详细信息

步骤2: 对于电子邮件请求将是这样的

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
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}'

在步骤1中,将
&scope=r\u基本配置文件+r\u电子邮件地址
更改为
&scope=r\u电子邮件地址+r\u liteprofile
@Vic谢谢,在我将r\u liteprofile添加为范围并将其添加为管理员Linkedin应用程序门户中的默认应用程序权限后,它就可以工作了!谢谢,在我将r_liteprofile添加为作用域并将其添加为管理员Linkedin应用程序门户中的默认应用程序权限后,它就可以工作了!谢谢