如何在Facebook上解决django社交认证错误?

时间:2017-10-07 20:13:04

标签: django facebook oauth django-authentication

我安装了target: 'node' 并按照指南here将Facebook登录集成到django 1.8.18。问题是,当我转到“http://localhost:8000/social-auth/login/facebook/”时,我得到以下错误

  

无法加载网址:此网址的域未包含在应用的域中。   为了能够加载此URL,请添加您的所有域和子域       应用到应用设置中的应用领域字段。

这是我的settings.py文件

social-auth-app-django

urls.py文件

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print (BASE_DIR)

SECRET_KEY = 'x220#z=kwd)kjiu#u+p$)v0lu+rspyosg+)l*k$ux9j)1h'
DEBUG = True

ALLOWED_HOSTS = ['localhost']    
INSTALLED_APPS = (
    ...
    'account',
    'social_django', #social classes
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
     'social_django.middleware.SocialAuthExceptionMiddleware',
)

ROOT_URLCONF = 'bookmark.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
 'social_django.context_processors.backends',  # <--
                'social_django.context_processors.login_redirect', # <--
            ],
        },
    },
]

WSGI_APPLICATION = 'bookmark.wsgi.application'

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media/')
from django.core.urlresolvers import reverse_lazy
LOGIN_REDIRECT_URL = reverse_lazy('dashboard')
LOGIN_URL = reverse_lazy('login')
LOGOUT_URL = reverse_lazy('logout')

AUTHENTICATION_BACKENDS = (
    'social_core.backends.facebook.FacebookOAuth2',  #< --facebook

    'django.contrib.auth.backends.ModelBackend',
    'account.authentication.EmailAuthBackend',
)

SOCIAL_AUTH_FACEBOOK_KEY='1742581762468139'
SOCIAL_AUTH_FACEBOOK_SECRET='eae7dsfdsfdsf90b219becb84'

这是Facebook开发者 - 应用程序设置详细信息截图 enter image description here

我还将localhost更改为类似“bookmarks.com”的内容并在/ etc / hosts文件中更改了它但得到了同样的错误error

2 个答案:

答案 0 :(得分:1)

幸运的是,我偶然发现了这个问题。如果您仍然遇到问题请尝试以下操作:当您在仪表板选项卡上时,请转到您的developer.facebook.com/apps,您应该在左侧UI和底部看到&# 34;产品&#34 ;.如果您还没有添加Facebook登录应用,请立即执行此操作。继续,一旦添加,点击它,点击&#34;设置&#34;在&#34; Facebook登录&#34;。

此时,您应该看到“客户端OAuth设置”,如果您看到&#34;使用严格模式重定向URI&#34; as&#34;是&#34;关闭它,但这样做你需要添加一个&#34;有效的OAuth重定向URI&#34;在这之下,只需添加localhost:8000匹配您的左上角设置,&#34;应用域名,即:localhost&#34;和#34; URL站点,即:localhost:8000 /&#34;。这应该够了吧!如果它没有请尽快回复我。

答案 1 :(得分:1)

我在使用social-auth-app-django时遇到了类似的问题,即使在修改了应用程序域后该问题仍然存在。和&#39; Oauth重定向网址#39; Facebook中的配置。

最后,发现问题是由于版本差异造成的。所以我在设置中添加了以下内容并且有效,

SOCIAL_AUTH_FACEBOOK_API_VERSION = '2.11'