您将它们指定为 django 设置。设置的名称是根据您自定义后端的name 参数动态生成的,格式为SOCAIL_AUTH_[BACKEND_NAME]_KEY 和SOCAIL_AUTH_[BACKEND_NAME]_SECRET。
例如,如果您的自定义后端如下所示:
class TimelyOAuth2(BaseOAuth2):
name = "custom-backend"
# ...
您可以在 settings.py 中添加以下内容:
SOCIAL_AUTH_CUSTOM_BACKEND_KEY = "..."
SOCIAL_AUTH_CUSTOM_BACKEND_SECRET = "..."
(当然,不要将你的密钥和秘密直接放在设置中;使用Django-environ之类的东西)
来源
这在我能找到的 python-social-auth 中的任何地方都没有记录。我通过阅读 social_core/backends/base.py、social_core/strategy.py 和 social_core/utils.py 中的相关代码发现了这一点。关键方法是get_key_and_secret,它试图从设置变量中获取这些。相关代码摘录如下:
# social_core/backends/base.py
class BaseAuth(object):
def get_key_and_secret(self):
return self.setting('KEY'), self.setting('SECRET')
# social_core/strategy.py
class BaseStrategy(object):
def setting(self, name, default=None, backend=None):
names = [setting_name(name), name]
if backend:
names.insert(0, setting_name(backend.name, name))
for name in names:
try:
return self.get_setting(name)
except (AttributeError, KeyError):
pass
return default
# social_core/utils.py
SETTING_PREFIX = 'SOCIAL_AUTH'
def to_setting_name(*names):
return '_'.join([name.upper().replace('-', '_') for name in names if name])
def setting_name(*names):
return to_setting_name(*((SETTING_PREFIX,) + names))