You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过django-allauth 0.35.0获取LinkedIn的r_basicprofile等字段

解决django-allauth 0.35.0 LinkedIn OAuth2获取位置和职位字段的问题

Hey there! 我之前刚好折腾过django-allauth和LinkedIn的OAuth2登录配置,给你说下怎么正确设置才能拿到位置和职位字段:

首先得明确两点:LinkedIn的旧版API(django-allauth 0.35.0适配的是这个版本)里,r_basicprofile权限已经覆盖了位置(location)和职位(positions)的访问权限,所以我们只需要在配置里指定要拉取的具体字段就行。

正确的SOCIALACCOUNT_PROVIDERS配置

直接在settings.py里这么写:

SOCIALACCOUNT_PROVIDERS = {
    'linkedin': {
        # 必须包含r_basicprofile权限,不然拿不到位置和职位
        'SCOPE': ['r_basicprofile'],
        # 指定要从LinkedIn拉取的字段,把location和positions加上
        'PROFILE_FIELDS': [
            'id',
            'first-name',
            'last-name',
            'email-address',
            'picture-url',
            'location',
            'positions',
            # 其他你需要的基础字段可以继续加在这里
        ]
    }
}

验证是否获取到了字段

用户登录后,你可以通过用户的社交账号数据查看拉取到的内容。比如在视图里加个调试代码:

from django.shortcuts import HttpResponse

def check_linkedin_data(request):
    if request.user.is_authenticated:
        # 获取用户关联的第一个LinkedIn账号
        linkedin_account = request.user.socialaccount_set.filter(provider='linkedin').first()
        if linkedin_account:
            # extra_data里就是从LinkedIn拉取到的所有字段
            return HttpResponse(str(linkedin_account.extra_data))
    return HttpResponse("请先通过LinkedIn登录")

访问这个视图就能看到location和positions的具体内容了。

注意事项

  • 确保你在LinkedIn开发者后台创建的应用已经开启了r_basicprofile权限,开发测试环境一般不需要审核就能用,但正式环境可能需要提交审核。
  • 因为django-allauth 0.35.0用的是LinkedIn v1 API,所以字段名必须用v1的格式(比如first-name而不是新版的localizedFirstName),别搞错了哦。

内容的提问来源于stack exchange,提问作者seuling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:40:27