Django All-Auth Facebook 集成

Django All-Auth Facebook Integration

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

活动摘要:

知道如何诊断导致问题的确切原因吗?

虚拟主机消息示例:

[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

示例 URL 在 return 来自 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 设置:

管理设置:

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 的测试服务器,但仍然有同样的问题。我有什么办法可以解决这个问题吗?

我是运行Python3.5.2,最新的pip install for all-auth

谢谢 斯蒂芬

我只是为此奋斗了一段时间。

我的诀窍是 Django-allauth "client" 代码需要是 Facebook "appid",不是 Facebook "client" .

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