48

我正在使用 django-allauth,并配置localhost:9000/admin/ 了以下详细信息:

socialapp .
provider:
Name:
Client id:
App ID, or consumer key
Key:
Secret:  etc .

我设置SITE_ID = 2(因为我将默认站点更改example.comlocalhost:9000

在 settings.py 中:

   INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'django.contrib.admin',
        'uni_form',
        'allauth',
        'allauth.account',
        'allauth.socialaccount',
        'bootstrapform',
        # 'allauth.socialaccount.providers.twitter',
        # 'allauth.socialaccount.providers.openid',
         'allauth.socialaccount.providers.facebook',
    )
    SOCIALACCOUNT_PROVIDERS = \
        { 'facebook':
            { 'SCOPE': ['email', 'publish_stream'],
              'AUTH_PARAMS': { 'auth_type': 'reauthenticate' },
              'METHOD': 'oauth2' ,
              'LOCALE_FUNC': 'path.to.callable'} }

当我去:

http://localhost:9000/accounts/facebook/login

我得到:

Error :  `SocialApp matching query does not exist.

我究竟做错了什么?

4

5 回答 5

73

使用 Django 管理员,您需要创建一个SocialApp列出您的 Facebook 应用程序凭据的列表。确保此应用程序附加到正确的站点(如,django.contrib.sites.models.Site)。

在您的情况下,需要有一个django.contrib.sites.models.Siteid=2 的实例(检查站点管理员),该实例被列为SocialApp.

如果SocialApp缺少 ,或者如果它已创建但未附加到与您的 匹配的站点settings.SITE_IDallauth则不知道要选择哪个应用程序,从而导致您在上面列出的错误消息。

于 2013-03-15T09:35:23.047 回答
14

对我来说,当我进入时它显示了这个错误settings.py

SITE_ID = 1

当我将其更改为2

SITE_ID = 2
于 2019-11-04T15:18:15.063 回答
14

就我而言,在添加社交应用程序页面上,我忘记将我的网站选择为"Chosen sites"‍♂️</p>

请参阅下面的屏幕截图(右下角是选择的站点列表)在此处输入图像描述

于 2020-03-12T09:38:28.547 回答
10

第 1 步:转到您的管理页面。 寻找social application

在此处输入图像描述

第 2 步:现在添加如下图所示的行。提供您的客户 ID 和由 google api 提供的密钥并available site (example.com)移至chosen sites 在此处输入图像描述

第3步:现在进入sites管理页面的侧面导航并像下图一样自定义并保存

在此处输入图像描述

第 4 步:现在,SITE_ID = 1在 settings.py 文件中添加。

于 2020-10-25T13:26:45.000 回答
1

作为将其放入管理员的替代方案,您还可以将其放入您的设置中,如下所示:(至少在 2022 年版本为 django-allauth==0.45.0

SOCIALACCOUNT_PROVIDERS = {
    'discord': {
        # From https://developer.twitter.com
        'APP': {
            'client_id': os.environ['TWITTER_API_KEY'],
            'secret': os.environ['TWITTER_API_SECRET'],
            'key': os.environ['TWITTER_APP_ID'],
        }
    },
    'twitter': {
        # From https://developer.twitter.com
        'APP': {
            'client_id': os.environ['TWITTER_API_KEY'],
            'secret': os.environ['TWITTER_API_SECRET'],
            'key': os.environ['TWITTER_APP_ID'],
        }
    },
}
于 2022-01-22T17:03:25.687 回答