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



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

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

我正在使用Linkedin Rest API获取授权后的用户信息。旧的v1 api是:https://api.linkedin.com/v1/people/~

查看此处的迁移指南:https://learn.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/migration-faq?context=linkedin/consumer/context

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

https://api.linkedin.com/v2/me

获取用户基本信息(如first_name和last_name(

然后:

https://api.linkedin.com/v2/emailAddress?q=members&投影=(元素*(手柄~((

获取用户的电子邮件地址

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

{
"serviceErrorCode": 100,
"message": "Not enough permissions to access: GET /me",
"status": 403
}

我在stackoverflow上搜索了很多,很多建议你需要作为合作伙伴订阅才能访问v2 api

此处:https://business.linkedin.com/marketing-solutions/marketing-partners/become-a-partner/marketing-developer-program

Linkedin在迁移指南中说:

我的开发人员应用程序是否可以访问v2 API通过领英开发者门户创建的任何开发者应用程序2018年12月15日之后,将自动访问v2 API。

现有的开发人员应用程序怎么样如果您的开发人员应用程序自10月1日以来已成功发出v1 API请求,2018年,您的开发者应用程序自动访问v2API

futhermore如果我请求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( 检索到访问令牌,我们可以请求用户信息ALWAYS 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)

感谢

如果您只需要名字和姓氏,请尝试使用r_liteprofile而不是r_basicprofile

试试这个:

第一步中的更改:&scope=r_basicprofile+r_emailaddress进入&scope=r_liteprofile+r_emailaddress

调用此:https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams((

正在获取_ liteprofile信息您将获得firstName、lastName、profilePicture、id

您应该通过'&scope=r_basicprofile+r_emailaddress'在AccessToken请求时

步骤1:AccessToken Request将类似

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,您必须使用它再提出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}'

最新更新