如何用Python社会认证实现Facebook认证?

0 投票
1 回答
767 浏览
提问于 2025-04-18 18:21

我跟着这个教程 http://www.artandlogic.com/blog/2014/04/tutorial-adding-facebooktwittergoogle-authentication-to-a-django-application/ 学习,成功让谷歌登录工作了。但是当我尝试用 Facebook 注册用户时,'http://localhost:8000/login/facebook' 会调用 https://facebook.com/dialog/oauth,结果返回了一个500错误——内部服务器错误。

这是我在 settings.py 里设置的内容:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'social.apps.django_app.default',

    ...
)


TEMPLATE_CONTEXT_PROCESSORS = (
   'django.contrib.auth.context_processors.auth',
   'django.core.context_processors.debug',
   'django.core.context_processors.i18n',
   'django.core.context_processors.media',
   'django.core.context_processors.static',
   'django.core.context_processors.tz',
   'django.contrib.messages.context_processors.messages',
   'social.apps.django_app.context_processors.backends',
   'social.apps.django_app.context_processors.login_redirect',
)

AUTHENTICATION_BACKENDS = (
   'social.backends.facebook.FacebookOAuth2',
   'social.backends.google.GoogleOAuth2',

   'django.contrib.auth.backends.ModelBackend',
)

SOCIAL_AUTH_FACEBOOK_KEY = 'xxxxxxxxxxxxxxx'
SOCIAL_AUTH_FACEBOOK_SECRET = 'xxxxxxxxxxxxxx'
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
LOGIN_REDIRECT_URL = '/'

在 urls.py 里:

   url('', include('social.apps.django_app.urls', namespace='social')),
   url('', include('django.contrib.auth.urls', namespace='auth')),

然后在 https://developers.facebook.com/apps 上我创建了一个新应用,添加了一个新平台(网站),并把网址设置为:

http://localhost:8000

我是不是漏掉了什么?

1 个回答

2

试试这个

你正在用你的 loaclhost:8000 网页地址进行认证。但是,Facebook 不支持 localhost 地址。所以你需要把你的本地地址换成一个定义好的域名。

比如说

domain.com:8000

撰写回答