我正在尝试在我的Django Web应用程序中激活社交登录名,该社交登录名来自此GitHub repository
中的开源软件(因此我没有编写);并遇到了这个众所周知的问题:
GitHub repository
基本DoesNotExist: SocialApp matching query does not exist.
文件位于settings
。我根本不修改该文件。相反,我将here
(继承)在我的here
import
文件的顶部,然后在其中进行覆盖和自定义。
与该问题特别相关,这是我在deploy.py
中为启用Google和Twitter社交身份验证而进行的相关替代和添加,这两者都会导致相同的错误:
settings
我在这里显示了两个提供程序示例– Twitter和Google-显示我正在做的事情的[[pattern,并表明问题不是特定于提供程序的;尽管让我们尝试仅关注Twitter来使事情保持简单。
现在根据deploy.py
–来自上述项目的INSTALLED_APPS.remove('allauth.socialaccount.providers.persona') # Remove
INSTALLED_APPS.append('allauth.socialaccount.providers.google') # Add
INSTALLED_APPS.append('allauth.socialaccount.providers.twitter') # Add
_GOOGLE = {
'SCOPE': ['email', 'https://www.googleapis.com/auth/userinfo.profile'],
'AUTH_PARAMS': {'access_type': 'online'},
'PROVIDER_KEY': get_env("GOOGLE_PROVIDER_KEY"), # Stored in secrets.env
'PROVIDER_SECRET_KEY': get_env("GOOGLE_PROVIDER_SECRET_KEY"), # Stored in secrets.env
}
SOCIALACCOUNT_PROVIDERS['google'] = _GOOGLE # This isn't enabled in biostar.settings.base
_TWITTER = {
'SCOPE': ['email'],
'AUTH_PARAMS': {'access_type': 'online'},
'PROVIDER_KEY': get_env("TWITTER_PROVIDER_KEY"), # Stored in secrets.env
'PROVIDER_SECRET_KEY': get_env("TWITTER_PROVIDER_SECRET_KEY"), # Stored in secrets.env
}
SOCIALACCOUNT_PROVIDERS['twitter'] = _TWITTER
–除了我上面(以编程方式实现)的实现之外,还必须设置相同的“社交帐户”和“密钥/秘密” -在[[Django Admin面板的社交应用部分中找到它们的键。 (请注意,fork大约是由同一团队进行的;因此,此要求也可能适用于原始的上游实现。)该文件的相关部分指示以下内容:
还原后,您需要重新输入社交登录信息。不幸的是,即使此信息需要在配置中初始化biostar的环境,也需要它(冗余)存储在数据库中。因此,转到Django Admin面板然后点击“社交应用”,然后浏览每个应用并填写适当的值。所以我也继续这样做。,我都会遇到上述异常,好像我错过了一步。无论我尝试什么(
不同的提供程序,不同的键,django面板添加项,没有django面板添加项,等等
顺便说一下,我尝试了Twitter的两个密钥对(因为我总是忘记使用哪个密钥对;所以都尝试了 andclose fork+ [ C0],虽然实际上是我在网上阅读的内容的前者)。仅出于完整性而提及此。this document
+this document
EDIT-1
:以下是完整的例外粘贴:Consumer Key (API Key)
此ID需要替换。
Consumer Secret (API Secret)
希望遇到此问题的任何人都会获得帮助。