【问题标题】:Django 2.0 allauth Facebook 2018Django 2.0 allauth Facebook 2018
【发布时间】:2018-08-27 06:15:35
【问题描述】:

我使用 Django all-auth 登录 Twitter 和 Google。 现在遇到 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

网址:https://localhost:8000/accounts/facebook/login/token/Django 版本:2.0.3 异常类型:KeyError 异常值:
'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',
    }
}

【问题讨论】:

  • “此 IP 无法为该应用程序发出请求。” - 听起来您在应用仪表板的“服务器 IP 白名单”中输入了一些内容,但实际上并没有从现在开始匹配您尝试发出请求的 IP。

标签: django facebook authentication django-allauth account


【解决方案1】:

Django 1.4.15、django-allauth 0.18.0、Facebook 升级 API v2.8
自 Mars 2018 以来,Facebook 默认将“使用严格模式重定向 URls”设置为“是”。我的问题出在 Facebook 应用配置中,而不是 django-allauth。
再次工作应用设置:

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

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

【讨论】:

  • 非常感谢你,伙计!对此,我真的非常感激。完美运行!
【解决方案2】:

如果其他人在 2020 年遇到此问题,请更新:

在 facebook 开发者中:

  1. 从您的主应用创建一个测试应用
  2. 设置 -> 基本,将 localhost 和 127.0.0.1 添加到应用程序域。将网站网址设置为 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 个站点注册到其中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2014-05-06
    • 2015-04-16
    相关资源
    最近更新 更多