Django All-Auth Facebook集成

问题描述 投票:1回答:1

我在为Django All-Auth设置Facebook社交集成时遇到了问题。我已经成功设置了谷歌登录,所以我不知道为什么一个有效,另一个没有。我认为这可能是由于我在settings.py中的Facebook配置,因为Facebook有很多可能的选择。

活动摘要:

  • 点击我的网站上的Facebook按钮登录
  • 浏览器重定向到Facebook网站进行登录,facebook请求密码。
  • Facebook接受密码
  • 浏览器重定向回我的网站,但出现以下错误:“社交网络登录失败,尝试通过您的社交网络帐户登录时出错”。
  • 登录失败

知道我怎么能诊断究竟是什么导致了这个问题?

示例webhost消息:

[16/Nov/2016 02:14:37] "GET /accounts/facebook/login/callback/?code=AQArXlYq-4K8
UBnuACFQZK39HvVAkZzYpnkP4hI223Y5kA1JmmjdF5yOeVHnrDRpxMOPFNviDzYeSSBvWccALZHGTl-8
7_A1-jtwpDF0UdgoGSVVd9KsrGrQDrHi0i6X9l_pO76-_Ro0N8ePr4L7uUd2G3aWAlZVtAKNNPG1kNBf
OIwhb_RFRJrFvdLA5TlUXaGFdkEsRdMawyG8tdAstXdm5FcxKBRYMOE98j3yalHm5oLLeXOMKJ14EdDw
8-DHU6f5Ze1DWaWWUd-3MFP-NvF2sG4XbA6n5McPrLgYZKb_YG8Slqgo5GDVrKHT1tNedzgceCjjDXT3
TfbzZc9e-aQT9EycKAdGDr1TkKw9lO-Lqw&state=5WqSSFEKy5bc HTTP/1.1" 200 8243

从Facebook返回后的示例网址:

http://127.0.0.1:8000/accounts/facebook/login/callback/?code=AQArXlYq-4K8UBnuACFQZK39HvVAkZzYpnkP4hI223Y5kA1JmmjdF5yOeVHnrDRpxMOPFNviDzYeSSBvWccALZHGTl-87_A1-jtwpDF0UdgoGSVVd9KsrGrQDrHi0i6X9l_pO76-_Ro0N8ePr4L7uUd2G3aWAlZVtAKNNPG1kNBfOIwhb_RFRJrFvdLA5TlUXaGFdkEsRdMawyG8tdAstXdm5FcxKBRYMOE98j3yalHm5oLLeXOMKJ14EdDw8-DHU6f5Ze1DWaWWUd-3MFP-NvF2sG4XbA6n5McPrLgYZKb_YG8Slqgo5GDVrKHT1tNedzgceCjjDXT3TfbzZc9e-aQT9EycKAdGDr1TkKw9lO-Lqw&state=5WqSSFEKy5bc#_=_

Facebook有效的OAuth重定向URI:

Facebook设置:

  • 客户端OAuth登录 - 已启用
  • Web OAuth登录 - 已启用
  • 嵌入式浏览器OAuth登录 - 已启用

管理员设置:

  • 客户端ID,秘密ID输入
  • 站点1设置为localhost

Settings.py应用:

INSTALLED_APPS = [
    'home',

    # Django Standard Apps
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # Django Crispy forms
    'crispy_forms',

    # Django allauth
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.facebook',
    'allauth.socialaccount.providers.google',
]

Settings.py社交:

SOCIALACCOUNT_PROVIDERS = \
    {
    'facebook':
    {'METHOD': 'oauth2',
    'SCOPE': ['email', 'public_profile'],
    'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
    #'FIELDS': [
    #'id',
    #'email',
    #'name',
    #'first_name',
    #'last_name',
    #'verified',
    #'locale',
    #'timezone',
    #'link',
    #'gender',
    #'updated_time'],
    'EXCHANGE_TOKEN': True,
    #'LOCALE_FUNC': 'path.to.callable',
    'VERIFIED_EMAIL': False,
    'VERSION': 'v2.4'},

    'google':
    { 'SCOPE': ['profile', 'email'],
    'AUTH_PARAMS': { 'access_type': 'online' } }
    }

我使用不同的重定向URI将此配置上载到具有SSL的测试服务器,但仍然存在相同的问题。我有什么想法可以解决这个问题吗?

我正在运行Python 3.5.2,以及针对all-auth的最新pip安装。

谢谢Stephen

django-allauth
1个回答
0
投票

我只是打了一会儿。

我的诀窍是Django-allauth“客户端”代码需要成为Facebook“appid”,而不是Facebook“客户端”。

当我使用Django管理区域将Facebook“客户端”更改为appid(或者您可以编辑数据库)时,问题就解决了。

© www.soinside.com 2019 - 2024. All rights reserved.