我在django里面使用:
social-auth-app-django
和python-social-auth[django]
。
在settings.py
中,我声明了以下变量:
SOCIAL_AUTH_FACEBOOK_KEY = ''
SOCIAL_AUTH_FACEBOOK_SECRET = ''
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {'fields': 'name, email'}
一切正常。但我希望在每个社交身份验证请求之前,在中间件或装饰器中设置SOCIAL_AUTH_FACEBOOK_KEY
和SOCIAL_AUTH_FACEBOOK_SECRET
动态。为什么我想要这个,因为我的django应用程序正在为多个站点提供数据,并且每个站点都有自己的密钥和他自己的域。
我无法找到覆盖设置中的变量或将密钥发送到social_auth的方法。
答案 0 :(得分:1)
要完成此任务,您有两种选择:
定义覆盖get_setting()
的自己的策略,并根据需要返回动态值(request
处可获得当前self.request
)。
然后使用SOCIAL_AUTH_STRATEGY
设置指向它。
扩展Facebook
后端并覆盖get_key_and_secret()
,并返回自定义值。当前请求位于self.strategy.request
。
然后在AUTHENTICATION_BACKENDS
设置中指向它(删除内置的int)。
编辑:排版