2012-02-02 102 views
2

我最近添加了一個額外的身份驗證後端,允許用戶使用他們的電子郵件地址或用戶名登錄,但似乎打破了django-social-auth,因爲啓用後,當我嘗試通過Facebook登錄,我得到的消息Incorrect authentication service電子郵件身份驗證後端休息django-social-auth

後端代碼是:

class EmailBackend: 
    supports_object_permissions = False 
    supports_anonymous_user = False 
    supports_inactive_user = False 

    def authenticate(self, username=None, password=None): 
     if email_re.search(username): 
      try: 
       user = User.objects.get(email=username) 
      except User.DoesNotExist: 
       return None 
     else: 
      try: 
       user = User.objects.get(username=username) 
      except User.DoesNotExist: 
       return None 
     if user.check_password(password): 
      return user 
     return None 

    def get_user(self, user_id): 
     try: 
      return User.objects.get(pk=user_id) 
     except User.DoesNotExist: 
      return None 

我的代碼片段從Django snippets

我AUTHENTICATION_BACKENDS:

AUTHENTICATION_BACKENDS = (
    'social_auth.backends.twitter.TwitterBackend', 
    'social_auth.backends.facebook.FacebookBackend', 
    'apps.members.backends.EmailBackend', 
) 

回答

0

我已經用django-social-auth成功地使用了一個email auth後端。我不記得做了什麼特別的工作,所以它可能是不明顯的,這裏是我可以看到我的代碼的唯一區別:

我有我的電子郵件後端定義在AUTHENTICATION_BACKENDS列表中的第一個,這在這裏可能有一些重要性。

我沒有定義任何supports_object_permissionssupports_anonymous_usersupports_inactive_user

+0

有趣,我會看看有沒有什麼提示helps..though我已經切換到[Django的電子郵件驗證(https://github.com/strange/django-email-auth) – 2012-06-14 16:25:09

+0

該建議沒有幫助,但感謝您的幫助......現在我只是將您的回答標記爲答案。無論如何,我仍然認爲電子郵件認證應用程序運行良好......如果沒有破壞,請不要亂用它 – 2012-06-18 15:15:40

相關問題