我正在使用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',
]
请指导我我做错了。
答案 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。