【问题标题】:How to solve django social auth error on Facebook?如何解决 Facebook 上的 django 社交身份验证错误?
【发布时间】:2018-03-19 09:04:26
【问题描述】:

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

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

这是我的 settings.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'

urls.py 文件

from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static

    urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
    url(r'^social-auth/',include('social_django.urls', namespace='social')), # <-- social facebook
        url(r'^account/',include('account.urls')),
        url(r'^$','account.views.dashboard',name="dashboard"),
    ]
    if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_ROOT,
                              document_root=settings.MEDIA_ROOT)

这是 Facebook 开发者应用设置详情截图

我还将 localhost 更改为“bookmarks.com”之类的内容,并在 /etc/hosts 文件中进行了更改,但出现相同的错误

【问题讨论】:

    标签: django facebook oauth django-authentication


    【解决方案1】:

    幸运的是,我偶然发现了这个问题。如果您仍然遇到问题,请尝试以下操作:当您在仪表板选项卡上时,转到您的 developer.facebook.com/apps,您应该会在左侧 UI 和底部的“产品”中看到。如果您尚未添加 Facebook 登录应用程序,请立即添加。继续,添加后点击它,点击“Facebook登录”下的“设置”。

    此时您应该会看到客户端 OAuth 设置,如果您将“对重定向 URI 使用严格模式”视为“是”将其关闭,但这样做您需要在其下添加“有效 OAuth 重定向 URI”,只需添加与左上角设置匹配的 localhost:8000,“应用程序域,即:localhost”和“URL 站点,即:localhost:8000/”。这应该够了吧!如果它不请尽快回复我。

    【讨论】:

    • 请注意,截至 2017 年 12 月,Facebook 需要严格模式,这破坏了我的登录。仍在寻找答案以找出解决此问题的方法。
    【解决方案2】:

    我在使用 social-auth-app-django 时遇到了类似的问题,即使在修改了“应用程序域”和“Oauth 重定向 url”之后问题仍然存在。 Facebook 中的配置。

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

    SOCIAL_AUTH_FACEBOOK_API_VERSION = '2.11'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      相关资源
      最近更新 更多