在用于社交身份验证的每个请求之前,为python-social-auth设置动态密钥/密钥

时间:2018-03-19 10:32:50

标签: python django facebook-oauth python-social-auth django-socialauth

我在django里面使用: social-auth-app-djangopython-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_KEYSOCIAL_AUTH_FACEBOOK_SECRET动态。为什么我想要这个,因为我的django应用程序正在为多个站点提供数据,并且每个站点都有自己的密钥和他自己的域。

我无法找到覆盖设置中的变量或将密钥发送到social_auth的方法。

1 个答案:

答案 0 :(得分:1)

要完成此任务,您有两种选择:

  1. 定义覆盖get_setting()的自己的策略,并根据需要返回动态值(request处可获得当前self.request)。

    然后使用SOCIAL_AUTH_STRATEGY设置指向它。

  2. 扩展Facebook后端并覆盖get_key_and_secret(),并返回自定义值。当前请求位于self.strategy.request

    然后在AUTHENTICATION_BACKENDS设置中指向它(删除内置的int)。

  3. 编辑:排版