Linkedin-api此资源在v1 API下不再可用

时间:2018-08-20 15:48:08

标签: django django-allauth linkedin-api

我正在使用allauth for django对linkedin进行身份验证,但是当我尝试进行身份验证时,它在api响应中返回“此资源在v1 API下不再可用” 以下是我对Django应用的设置。

'SCOPE': [
            'w_share','r_emailaddress','r_basicprofile','rw_company_admin'
        ],
        'PROFILE_FIELDS': [
            'id',
            'first-name',
            'last-name',
            'email-address',
            'picture-url',
            'public-profile-url',
        ]

请指导我我做错了。

2 个答案:

答案 0 :(得分:1)

如@Antwane所述

access_token_url = 'https://api.linkedin.com/uas/oauth2/accessToken'
authorize_url = 'https://www.linkedin.com/uas/oauth2/authorization'

使用

access_token_url = 'https://www.linkedin.com/oauth/v2/accessToken'
authorize_url = 'https://www.linkedin.com/oauth/v2/authorization'

,然后将范围内的r_basicprofile替换为r_liteprofile。在v2中,它们将r_basicprofile替换为r_liteprofile

现在要访问基本个人资料,您需要呼叫https://api.linkedin.com/v2/me而不是https://api.linkedin.com/v1/people/~。与v1 API不同,您不会在配置文件API中获得电子邮件地址(简而言之,r_liteprofile不包含电子邮件地址)。

在发出API请求时添加标头字段"X-RestLi-Protocol-Version":"2.0.0"

要访问电子邮件地址,您应该致电https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))

答案 1 :(得分:0)

这是known issue。您可能要等到pull request #2087被合并,以便issue #2086被关闭,并发布django-allauth的新版本。

在此之前,您可以使用更新的访问令牌和授权URL为Linkedin API创建自定义适配器。有关更多信息,请参见allauth documentation

例如,将模块allauth.socialaccount.providers.linkedin_oauth2复制到您自己的项目中,然后编辑views.py以更新URL

access_token_url = 'https://api.linkedin.com/uas/oauth2/accessToken'
authorize_url = 'https://www.linkedin.com/uas/oauth2/authorization'

需要更改为:

access_token_url = 'https://www.linkedin.com/oauth/v2/accessToken'
authorize_url = 'https://www.linkedin.com/oauth/v2/authorization'

现在,将自定义的allauth应用添加到INSTALLED_APPS中将使您像以前一样使用Linkedin API。