Django 2.0 allauth Facebook 2018

Django 2.0 allauth Facebook 2018

我获得了 Twitter 并且 Google 使用 Django all-auth 登录。 现在 Facebook 有问题。 尝试了 localhost/127.0.0.1/etc 之间的每一个组合(也通过将我的主机更改为 local.domain.com 走极端路线 - 甚至因为 Facebook 显然阻止了 http 访问(自 2018 年 3 月起)而出现了 SSL 问题。

到此为止...现在我收到此错误 谁能引导我走向正确的方向? 我要拔头发了

KeyError at /accounts/facebook/login/token/ 'access_token' Request Method:    POST Request

URL: https://localhost:8000/accounts/facebook/login/token/ Django Version: 2.0.3 Exception Type: KeyError Exception Value:
'access_token'

{'error': {'code': 5,
           'fbtrace_id': 'Bs4PHOvc+rZ',
           'message': "This IP can't make requests for that application.",
           'type': 'OAuthException'}}

添加详情:

http://localhost:8000/accounts/facebook/login/callback

SOCIALACCOUNT_PROVIDERS = {
    'facebook': {
        'METHOD': 'js_sdk',
        'SCOPE': ['email', 'public_profile', 'user_friends'],
        'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
        'INIT_PARAMS': {'cookie': True},
        'FIELDS': [
            'id',
            'email',
            'name',
            'first_name',
            'last_name',
            'verified',
            'locale',
            'timezone',
            'link',
            'gender',
            'updated_time',
        ],
        'LOCALE_FUNC': lambda request: 'en_GB',
        'EXCHANGE_TOKEN': True,
        'VERIFIED_EMAIL': False,
        'VERSION': 'v2.5',
    }
}

Django 1.4.15,django-allauth0.18.0,Facebook升级APIv2.8
自 2018 年火星以来,Facebook 默认设置 "Use Strict Mode for Redirect URls" YES。我的问题出在 Facebook 应用程序配置中,而不是 django-allauth.
再次工作应用程序设置:

基本设置
- 应用程序域:"AnySite.com"
- 隐私政策 URL:“https://AnySite.com/myprivacy/
- 网站:“https://AnySite.com/
高级设置
- 服务器IP白名单:留空
- 域管理器:让它空白

Facebook 登录设置
是客户端 OAuth 登录
是 Web OAuth 登录
是(新:强制)对重定向使用严格模式 URLs
是 嵌入式浏览器 OAuth 登录
是 强制执行 HTTPS
有效的 OAuth 重定向 URLs:“https://AnySite.com/accounts/facebook/login/callback/”(强制)
希望对你有帮助。

更新以防其他人在 2020 年遇到此问题:

在 Facebook 开发者中:

  1. 从您的主应用创建测试应用
  2. settings -> basic,将 localhost 和 127.0.0.1 添加到应用域。将站点 url 设置为 https://localhost:8000
  3. 产品 -> Facebook 登录 -> 设置。客户端,已启用登录。启用嵌入式浏览器 OAuth 登录。 将所有这些添加到有效的 OAuth 重定向 URI 中: https://127.0.0.1:8000/ https://127.0.0.1:8000/accounts/facebook/login/callback https://localhost:8000/ https://localhost:8000/accounts/facebook/login/callback

在 Django 中:

  1. pip install django-sslserver
  2. 将 sslserver 添加到 INSTALLED_APPS
  3. python manage.py runsslserver

在管理员中:

  1. 创建 2 个站点,https://127.0.0.1:8000/ 和 https://localhost:8000/
  2. 添加社交应用程序,facebook,添加您的测试应用程序 ID 和密钥。将以上2个站点注册进去。