Django:DoesNotExist:SocialApp匹配查询不存在

时间:2017-09-29 11:06:22

标签: python django twitter django-socialauth

我正在尝试激活我的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

2 个答案:

答案 0 :(得分:1)

我一次又一次遇到相同的错误,并通过此方法解决..

我们收到此错误的原因SITE_ID = 1 当出现“ SocialApp匹配查询不存在”时,

  

此ID需要替换。

SITE_ID = 1

希望其他任何遇到此问题的人都可以得到帮助。

答案 1 :(得分:0)

按照以下步骤可以解决此问题:

  1. 转到名为 django_site 的数据库表。
  2. 查看在社交应用程序中作为选定站点提及的站点的 ID 号。
  3. 现在在 Django 项目的 setting.py 中将 SITE_ID 配置为 id 号。