简体   繁体   English

django-pipeline崩溃了python社会认证

[英]django-pipeline crashes python social auth

Currently I'm working in a little project that is contemplating social authentication (so python-social-auth is great). 目前我正在开展一个正在考虑社会认证的小项目(所以python-social-auth很棒)。 Also, I wanna to integrate django-pipeline to handle my assets (css principally). 另外,我想整合django-pipeline来处理我的资产(主要是css)。

JS to perform a social sign up: JS执行社交注册:

vm.doSocialAuth = function(provider) {
  var authURL = '/auth/login/' + provider + '/?next=/auth/completed/';
  $window.open(authURL, 500, 500);
};

Social authentication works fine. 社会认证工作正常。

But when I do: 但当我这样做时:

INSTALLED_APPS += ['pipeline']
PIPELINE = {
    # 'PIPELINE_ENABLED': True,  # Missing this allows pipeline in debug mode
    'STYLESHEETS': {
        'main': {
            'source_filenames': (
              'css/cover.css',
            ),
            'output_filename': 'css/main.css',
            'extra_context': {
                'media': 'screen,projection',
            },
        },
    },
}

And I try to make a social sign in, this exception is triggered: 我尝试进行社交登录,触发此异常:

ERROR Internal Server Error: /auth/complete/twitter/
Traceback (most recent call last):
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/apps/django_app/utils.py", line 54, in wrapper
    return func(request, backend, *args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/apps/django_app/views.py", line 28, in complete
    redirect_name=REDIRECT_FIELD_NAME, *args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/actions.py", line 43, in do_complete
    user = backend.complete(user=user, *args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/backends/base.py", line 41, in complete
    return self.auth_complete(*args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/utils.py", line 229, in wrapper
    return func(*args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/backends/oauth.py", line 182, in auth_complete
    return self.do_auth(access_token, *args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/utils.py", line 229, in wrapper
    return func(*args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/backends/oauth.py", line 193, in do_auth
    return self.strategy.authenticate(*args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/strategies/django_strategy.py", line 96, in authenticate
    return authenticate(*args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 74, in authenticate
    user = backend.authenticate(**credentials)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/backends/base.py", line 82, in authenticate
    return self.pipeline(pipeline, *args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/backends/base.py", line 85, in pipeline
    out = self.run_pipeline(pipeline, pipeline_index, *args, **kwargs)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/backends/base.py", line 111, in run_pipeline
    func = module_member(name)
  File "/home/dosher/.venvsa/env_hrpro/lib/python2.7/site-packages/social/utils.py", line 55, in module_member
    mod, member = name.rsplit('.', 1)
ValueError: need more than 1 value to unpack

I don't know if its a issue for python-social-auth library or for django-pipeline, so I've posted it here. 我不知道它是python-social-auth库还是django-pipeline的问题,所以我在这里发布了它。

Any help is appreciated. 任何帮助表示赞赏。

The credit for the next answer is all for Julian Bez , he posted this comment. 下一个答案的功劳全部归功于Julian Bez ,他发表了这条评论。

And he is basically suggesting to define a SOCIAL_AUTH_PIPELINE variable inside our project's settings file and python-social-auth is going to work smoothly with django-pipeline. 他基本上建议在我们项目的设置文件中定义一个SOCIAL_AUTH_PIPELINE变量,python-social-auth将与django-pipeline顺利运行。

So, here's my SOCIAL_AUTH_PIPELINE : 所以,这是我的SOCIAL_AUTH_PIPELINE

settings.py settings.py

# By defining SOCIAL_AUTH_PIPELINE, we avoid a conflict between django-pipeline
# and python-social-auth.
SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.user.get_username',

    # Send a validation email to the user to verify its email address.
    # Disabled by default.
    # 'social.pipeline.mail.mail_validation',

    # Associates the current social details with another user account with
    # a similar email address. Disabled by default.
    # 'social.pipeline.social_auth.associate_by_email',

    'social.pipeline.user.create_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details',
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM