我正在尝试激活我的Django Web应用程序中的社交登录,该应用程序来自此GitHub repository
中的开源软件(所以我没有写它);我遇到了这个众所周知的问题:
DoesNotExist: SocialApp matching query does not exist.
基本settings
文件位于here
。我根本不修改那个文件。相反,我import
(继承)它位于我的deploy.py
settings
文件的顶部,并在那里进行覆盖和自定义。
与此问题特别相关,以下是我在deploy.py
中启用 Google 和 Twitter 社交身份验证的相关覆盖和补充,导致同样的错误:
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
我在这里展示了两个提供商示例 - Twitter 和 Google - 以显示我正在做的模式并显示该问题不是提供者特定的;虽然让我们只关注Twitter,以保持简单。
现在根据this document
- 来自上述项目的close fork - 除了我上面(以编程方式)实现的内容之外,还需要设置相同的社交帐户以及 Django管理员面板的社交应用部分中的键/密钥。 (请注意,该fork通常由同一个团队处理;因此该要求可能也适用于原始的上游实现)。该文件的相关部分指示如下:
恢复后,您需要重新输入社交登录信息。 不幸的是,即使这些信息需要在配置中 初始化biostar的环境,它也需要它 (冗余地)也在数据库中。所以转到Django Admin面板 然后单击社交应用程序,然后浏览每个应用程序并填写 适当的价值观。
所以我也继续这样做。
无论我尝试什么(不同的提供商,不同的密钥,django面板添加,没有django面板添加等),我都会得到上述异常,好像我错过了一步。 / p>
顺便说一句,我尝试了两个关键对Twitter(因为我总是忘记要使用哪一对;所以尝试了Consumer Key (API Key)
+ Consumer Secret (API Secret)
和 Access Token
+ Access Token Secret
,虽然它实际上是我在网上看到的前者)。只是提到这一点是为了完整。
我错过了什么?有什么想法吗?
提前谢谢! :)
EDIT-1 :以下是异常的完整粘贴:https://pastebin.com/0UBAfAtu
答案 0 :(得分:1)
我一次又一次遇到相同的错误,并通过此方法解决..
我们收到此错误的原因SITE_ID = 1 当出现“ SocialApp匹配查询不存在”时,
此ID需要替换。
SITE_ID = 1
希望其他任何遇到此问题的人都可以得到帮助。
答案 1 :(得分:0)
按照以下步骤可以解决此问题:
django_site
的数据库表。SITE_ID
配置为 id 号。