我已经按照此处LinkedIn配置的说明在我的 Django 设置中设置了SOCIAL_AUTH_LINKEDIN_FIELD_OAUTH2_SELECTORS字段:http://psa.matiasaguirre.net/docs/backends/linkedin.html
但是,当我运行身份验证时,添加到该设置的其他电子邮件选择器不会添加到后端调用中的选择器列表中。
当我删除该字段SOCIAL_AUTH_LINKEDIN_FIELD_OAUTH2_SELECTORS时,我收到一个错误,指出它丢失了:
"设置"对象没有属性 "SOCIAL_AUTH_LINKEDIN_FIELD_OAUTH2_SELECTORS">
所以我知道我使用的是正确的设置名称。
但是,添加的参数都没有进入后端:
设置。SOCIAL_AUTH_LINKEDIN_FIELD_OAUTH2_SELECTORS = ['id', "收到的推荐"、"职位"、"电子邮件地址"、"标题", "行业"、"名字"、"姓氏"、"位置"、"连接数", "技能"]
我打印了后端的结果,并且始终只获取默认选择器列表:
[编辑的后端/LinkedIn.py 来自https://github.com/omab/python-social-auth/blob/master/social/backends/linkedin.py#L32]
def user_details_url(self):
# use set() since LinkedIn fails when values are duplicated
fields_selectors = list(set(['first-name', 'id', 'last-name'] +
self.setting('FIELD_SELECTORS', [])))
print fields_selectors
# user sort to ease the tests URL mocking
fields_selectors.sort()
fields_selectors = ','.join(fields_selectors)
return self.USER_DETAILS.format(fields_selectors)
#> ["名字"、"ID"、"姓氏"]
如何通过 DJANGO 设置添加选择器以扩展身份验证时返回的数据?
阿米尔的建议奏效了!
SOCIAL_AUTH_LINKEDIN_OAUTH2_FIELD_SELECTORS
我最终向social.strategies.django_strategies中添加了一个打印语句,并列出了所有正在拉取的设置:
def get_setting(self, name):
print name
return getattr(settings, name)
清单。。。
# SOCIAL_AUTH_REDIRECT_IS_HTTPS
# REDIRECT_IS_HTTPS
# SOCIAL_AUTH_LINKEDIN_OAUTH2_KEY
# SOCIAL_AUTH_LINKEDIN_OAUTH2_SECRET
# SOCIAL_AUTH_LINKEDIN_OAUTH2_REQUESTS_TIMEOUT
# SOCIAL_AUTH_REQUESTS_TIMEOUT
# REQUESTS_TIMEOUT
# SOCIAL_AUTH_LINKEDIN_OAUTH2_URLOPEN_TIMEOUT
# SOCIAL_AUTH_URLOPEN_TIMEOUT
# URLOPEN_TIMEOUT
# SOCIAL_AUTH_LINKEDIN_OAUTH2_FIELD_SELECTORS
....