2015-03-19 49 views
2

,我有以下pipleline在我的Django配置文件Facebook登錄與蟒蛇 - 社會 - 身份驗證模塊:Python的社會身份驗證Django的管道nonetype錯誤

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.social_auth.associate_user', 
    'social.pipeline.social_auth.load_extra_data', 
    'social.pipeline.user.get_username', 
    'social.pipeline.user.user_details', 
    'social.pipeline.social_auth.associate_by_email', 
) 

我的登錄方法看起來像這樣:

當我嘗試了第一次與Facebook,我發現了以下驗證: AttributeError的AT /完整/ Facebook的/ 「NoneType」對象有沒有屬性「供應商」

def user_login(request): 
    """ Login page view.""" 

    #context = RequestContext(request) 
    context = RequestContext(request, 
          {'request': request, 
           'user': request.user}) 

    user = request.user 

    if request.method == 'POST': 
     username = request.POST['username'] 
     password = request.POST['password'] 
     user = authenticate(username=username, password=password) # authentication 

    if not user.is_anonymous(): 
     print user 
     if not request.method == 'POST': 

      user.backend = 'django.contrib.auth.backends.ModelBackend' 
     if user.is_active: 
      login(request, user) 
      return HttpResponseRedirect('/') 
     else: 
      return render_to_response('main/login.html', {}, context) 

    else: 
     return render_to_response('main/login.html', {}, context) 

但是,如果我註釋掉SOCIAL_AUTH_PIPELINE並嘗試登錄,那就沒問題。當然,一旦社交授權用戶在數據庫中,Pipleline正在正常工作。

我很感激任何想法在哪裏尋找一個錯誤。

回答

1

嘗試添加此設置: SOCIAL_AUTH_ALWAYS_ASSOCIATE =真

看來你的用戶沒有連接到的社會知名度。

+0

不,事實並非如此。 – user4689565 2015-03-28 21:59:34

5

這可能不是你的原因,因爲在我的情況下,我得到了這個錯誤,無論管道是什麼,但它可能會幫助別人。

在我的情況下,我得到了這個錯誤,因爲我從auth_user表中刪除了用戶,但是在social_auth_usersocialauth表中仍然存在指向不存在的用戶ID的記錄,從而阻止用正確的用戶創建記錄。 在我的情況下,通過從social_auth_usercoaialauth表中刪除記錄或修復該記錄以指向現有的用戶標識解決了這個問題。

相關問題