添加到默认的Python社会的oauth2场选择

问题描述:

我已经设置了SOCIAL_AUTH_LINKEDIN_FIELD_OAUTH2_SELECTORS场在我的Django的设置按照指令LinkedIn的配置在这里:http://psa.matiasaguirre.net/docs/backends/linkedin.html添加到默认的Python社会的oauth2场选择

但是当我运行的其他电子邮件选择添加到设置的认证没有添加到后端调用中的选择器列表中。

当我删除领域SOCIAL_AUTH_LINKEDIN_FIELD_OAUTH2_SELECTORS我得到一个错误,它丢失:

“设置”对象有没有属性 “SOCIAL_AUTH_LINKEDIN_FIELD_OAUTH2_SELECTORS”

所以我知道我使用的是正确的设置名称。

无添加的则params的使它的后端,但:

settings.SOCIAL_AUTH_LINKEDIN_FIELD_OAUTH2_SELECTORS = [ '身份证', 的建议,收到“, '位置', '电子邮件地址',“标题”, ‘产业’,‘直呼其名’,‘最后的名字’,‘位置’,‘NUM的连接’, ‘技能’]

我打印出来后端的结果,并始终刚刚得到默认的选择器列表:

01从 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'

[编辑后端/ linkedin.py, '最后的名字']

如何添加通过DJANGO设置选择器来扩展认证时返回的数据?

+0

我认为正确的参数是使用'SOCIAL_AUTH_LINKEDIN_OAUTH2_FIELD_SELECTORS' – 2014-12-13 02:09:46

+0

虽然使用并不会引起param所列出的selctors的错误不工作: - /我想出一个办法但它有点破解;我认为这个问题与系统有关。我将在下面列出它作为答案。 – Sean 2014-12-16 20:07:10

阿米尔建议的工作!:

SOCIAL_AUTH_LINKEDIN_OAUTH2_FIELD_SELECTORS

我结束了添加打印语句social.strategies.django_strategies并得到了所有设置alisting被拉:

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 

....