【问题标题】:How to solve Authentication process canceled error?如何解决身份验证过程取消错误?
【发布时间】:2015-11-04 15:37:42
【问题描述】:

现在我尝试设置 python-social-app

在用户名/密码重定向到错误页面后在 facebook 登录中,我不知道为什么会发生这种情况...

在我的设置中,我有 'social.backends.facebook.FacebookOAuth2' 并且我正确设置了 SOCIAL_AUTH_FACEBOOK_KEY 和 Secret 所以真的在哪里查看错误。?

追溯

Environment:
Request Method: GET
Request URL: http://website.com:8000/complete/facebook/?redirect_state=IuQDEiyX2bbS8Uhk7MR3hpRFLNZlW2Y5&code=AQDH5kqBibfy9bi21M9tTieujRAqvJVYdAb2UPFvfH6DVXoCWrrtamRA99Ze5-6cC6qHPiNq-a3XbGh2Gg4pbdFfM4OTpCEpWkPID6SZrHfAoEan8Q68cV17LDgsryX_M45QoXd0knpbE0x-QwAPwdoFmKQGHLw7xomCHeN5pCtrWhtoYQIrsFE1UQZZaxt4qtLzAmfmCRjDO7Et_S75fngLiomM0PfevTChLbHJHMYaqy6DBkgGZqZK-bXrqLaNFnBEoZ3M956DwCg4ZtTnvxulR4sXH9ZV3IoxVhL0JxMVsGnT2H_0wdKujIDPKcdPKZc&state=IuQDEiyX2bbS8Uhk7MR3hpRFLNZlW2Y5

Django Version: 1.8.3
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'frontend',
 'social.apps.django_app.default')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware')


Traceback:
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  57.         response = view_func(request, *args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
  58.         return view_func(*args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/social/apps/django_app/utils.py" in wrapper
  51.             return func(request, backend, *args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/social/apps/django_app/views.py" in complete
  28.                        redirect_name=REDIRECT_FIELD_NAME, *args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/social/actions.py" in do_complete
  43.         user = backend.complete(user=user, *args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/social/backends/base.py" in complete
  41.         return self.auth_complete(*args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/social/utils.py" in wrapper
  232.                 raise AuthCanceled(args[0])

Exception Type: AuthCanceled at /complete/facebook/
Exception Value: Authentication process canceled

【问题讨论】:

标签: python django python-social-auth


【解决方案1】:

我很长一段时间都遇到了同样的问题。花了很多时间后,我发现了问题所在。出于某种原因,social-app-djangodocument 将 Facebook API 的当前版本指定为 2.9(安全原因?)。当前版本是2.8。因此,只需将其更改为 2.8 或将其删除。

SOCIAL_AUTH_FACEBOOK_API_VERSION = '2.8'

这就是原因,我的身份验证被取消了。希望这可以帮助 !

【讨论】:

    【解决方案2】:

    我在使用 Facebook 和 Google 时遇到了完全相同的问题。 从昨天开始就一直在尝试这个。 它终于工作了...... 在下面列出了我的工作设置,也许它会有所帮助......

    在我看来,在我看来,登录模板中的 href 值与问题有关??

    希望对你有帮助

    SETTINGS.PY
    SOCIAL_AUTH_GOOGLE_OAUTH2_KEY='****************.apps.googleusercontent.com'
        SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET ='**************'
    
        SOCIAL_AUTH_RAISE_EXCEPTIONS = False
        SOCIAL_AUTH_FACEBOOK_KEY = '************' # Facebook App ID
        SOCIAL_AUTH_FACEBOOK_SECRET = '*********************' # Facebook App Secret
    

    INSTALLED_APPS

    'social.apps.django_app.default'
    

    模板

    'context_processors':
    social.apps.django_app.context_processors.backends',
    'social.apps.django_app.context_processors.login_redirect',
    

    URLS.PY

    from django.conf import settings
    
    urlpatterns = [
        url('', include('django.contrib.auth.urls', namespace='auth')),
        url('', include('social.apps.django_app.urls', namespace='social')),
    

    最后是 LOGIN.HTML 模板,原来的 href 似乎有问题

    原来的href是:

    <li class="facebook"><a href="{% url 'social:begin' 'facebook' %}">Login with Facebook</a></li>
    

    这已更改为

     <li class="facebook"><a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}">Login with Facebook</a></li>
    

    对谷歌的href也做了同样的改变.....

    在 FACBOOK 开发者控制台中

    基本设置

    APP DOMAINS = mysite.com (还更改了 /etc/hosts 文件以将 mysite.com 而不是 localhost 映射到 127.0.0.1)

    网站网址="example.com:8000/"

    高级设置 只要 “Allow API Access to App Settings”和“Collect the Apple Advertising Identifier (IDFA) with App Events”设置为YES

    除客户端令牌字段外,所有其他字段均设置为 no 或空白

    GOOGLE API 设置如下

    “Authorized JavaScript origins”这个留空

    “授权重定向 URI”设置为 http://example.com:8000/complete/google-oauth2/ (最初我使用的是http://example.com:8000/social-auth/complete/google-oauth2/

    在“Oauth 同意屏幕”上

    “电子邮件地址” 已设置

    “向用户显示的产品名称” 已设置

    所有其他字段保留默认设置

    【讨论】:

    • SOCIAL_AUTH_RAISE_EXCEPTIONS = False 处理了我在用户决定取消身份验证过程时收到的 Twitter AuthCanceled 异常。谢谢。
    【解决方案3】:

    我有同样的事情(在使用亚马逊进行登录授权时),并且一直在摸索,直到我注意到我的 settings.py 中有一个简单的错字...

    SOCAIL_AUTH_AMAZON_SECRET = "XXXXXXXXXXXXXXXXX"  
    

    应该是这样的:

    SOCIAL_AUTH_AMAZON_SECRET = "XXXXXXXXXXXXXXXXX" 
    

    就是这样 - 与取消身份验证无关,尽管我确信 social_django 包看起来就是这样。

    【讨论】:

      猜你喜欢
      • 2013-02-27
      • 1970-01-01
      • 2017-10-28
      • 1970-01-01
      • 2013-06-08
      • 2018-03-19
      • 2018-02-01
      • 2020-08-22
      • 1970-01-01
      相关资源
      最近更新 更多