2017-07-28 98 views
9

Bir web sitesine Social-auth-app-django kullanarak sosyal medya kimlik doğrulaması eklemeye çalışıyorum.plathon-social-auth'u kullanarak web sitesine yeniden yönlendirirken utanmaz tipte Django

En popüler sosyal medya siteleri (Facebook, Twitter, Google+) için farklı uygulamalar oluşturdum ve orada geri arama URL'sini belirledim.

:

Internal Server Error: /oauth/complete/facebook/ 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 39, in inner 
    response = get_response(request) 
    File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func 
    response = view_func(request, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view 
    return view_func(*args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/social_django/utils.py", line 50, in wrapper 
    return func(request, backend, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/social_django/views.py", line 32, in complete 
    redirect_name=REDIRECT_FIELD_NAME, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/social_core/actions.py", line 41, in do_complete 
    user = backend.complete(user=user, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/social_core/backends/base.py", line 40, in complete 
    return self.auth_complete(*args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/social_core/utils.py", line 252, in wrapper 
    return func(*args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/social_core/backends/facebook.py", line 110, in auth_complete 
    return self.do_auth(access_token, response, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/social_core/backends/facebook.py", line 152, in do_auth 
    return self.strategy.authenticate(*args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/social_django/strategy.py", line 115, in authenticate 
    return authenticate(*args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/django/contrib/auth/__init__.py", line 74, in authenticate 
    user = backend.authenticate(**credentials) 
    File "/usr/local/lib/python3.5/site-packages/social_core/backends/base.py", line 80, in authenticate 
    return self.pipeline(pipeline, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/social_core/backends/base.py", line 83, in pipeline 
    out = self.run_pipeline(pipeline, pipeline_index, *args, **kwargs) 
    File "/usr/local/lib/python3.5/site-packages/social_core/backends/base.py", line 105, in run_pipeline 
    for idx, name in enumerate(pipeline[pipeline_index:]): 
TypeError: unhashable type: 'slice' 
Aşağıda

Ben social_django yapılandırma şeklinize bir özetidir:

Ama web sitesine geri yönlendirilir ediyorum bir hata karşısında geliyorum Facebook demek

settings.py yılında: Daha sonra

INSTALLED_APPS = [ 
    'social_django', 
    ... 
] 

AUTHENTICATION_BACKENDS = (
    'social_core.backends.google.GoogleOAuth2', 
    'social_core.backends.twitter.TwitterOAuth', 
    'social_core.backends.facebook.FacebookOAuth2', 

    'django.contrib.auth.backends.ModelBackend', 
) 

SOCIAL_AUTH_FACEBOOK_KEY = 'xxx' 
SOCIAL_AUTH_FACEBOOK_SECRET = 'xxx' 

... 

PIPELINE = { 
    'PIPELINE_ENABLED': True, 
    'STYLESHEETS': {...}, 
    'JAVASCRIPT': {...}, 
    'JS_COMPRESSOR': 'pipeline.compressors.NoopCompressor', 
    'COMPILERS': (
     'pipeline.compilers.sass.SASSCompiler', 
    ) 
} 

, ben açıkçası c veritabanını göç ettik yeni tabloları tekrarlayın. 1.10.5

  • social_django:

    • Django:

      Django ve social_django sürümleri aşağıda bulabilirsiniz boru hattı kullanılır İlişkin 1.2.0

    , ben django-pipeline kullanıyorum ama Sadece SASS dosyalarını CSS'a derlemek için.

    Bu hata neden olabilir?

  • +0

    dilim (bir liste olarak) bir değişken tiptedir:

    >>> from social_core.strategy import BaseStrategy >>> st = BaseStrategy() >>> st.get_pipeline() ---> ??? >>> from django.conf import settings >>> settings.PIPELINE ---> ??? 

    Umut bu settings.py için aşağıdaki boru hattı sorunu (source) sabit gibi görünüyor ekleme –

    +0

    unhashable tip hatası alacaksınız. –

    +0

    Lütfen Django sürümü, python-social-auth sürümü, tam iz, özel yapılandırmalar gibi özel yapılandırmalar vb. Gibi daha fazla ayrıntı yayınlayın. – omab

    cevap

    3

    yardımcı oldu. Bu yüzden, eğer bir sözlükte bunu kullanmaya çalışıyorsanız, o zaman, o zaman hatayı ya da en azından python-social-auth'u yapılandırma şeklinizi göstermeniz gereken,
    1

    Bu hata, bir dict nesnesinden bir dilim almaya çalışırken ortaya çıkar. Yani, traceback'in son satırı noktasında, pipelines, ayarlarınız PIPELINE nesnesini sağlamadığı sürece varsayılan değerin sociel_core.pipeline.DEFAULT_AUTH_PIPELINE olduğu bir sıra olması gerektiğinde bir diktedir.

    https://github.com/python-social-auth/social-core/blob/ccc50a5932b199a1a5209a08563c8997eb99391d/social_core/pipeline/init.py#L1

    https://github.com/python-social-auth/social-core/blob/ccc50a5932b199a1a5209a08563c8997eb99391d/social_core/strategy.py#L99

    Böylece bir dizi (liste, tuple, özel) ve bir dict olmalıdır bu BORU HATTI kurcalamayacağından ayarlarınız modülünde muhtemelen bir şey şüpheli.

    İpuçları: ipython'u yükleyin ve python manage.py shell ile oynayın ve aşağıdakileri inceleyin.

    SOCIAL_AUTH_PIPELINE = (
        'social_core.pipeline.social_auth.social_details', 
        'social_core.pipeline.social_auth.social_uid', 
        'social_core.pipeline.social_auth.social_user', 
        'social_core.pipeline.user.get_username', 
        'social_core.pipeline.user.create_user', 
        'social_core.pipeline.social_auth.associate_user', 
        'social_core.pipeline.social_auth.load_extra_data', 
        'social_core.pipeline.user.user_details', 
        'social_core.pipeline.social_auth.associate_by_email', 
    ) 
    
    +0

    'st.get_pipeline()' bu hatayı atar: 'NotImplementedError: Alt sınıfta uygulama '. Bir boru hattı python-sosyal-auth ile uygulanmalı mı? – h4k1m