2

最近、ユーザーが自分のメールアドレスまたはユーザー名を使用してログインできるように認証バックエンドを追加しましたが、有効にした後、Facebookからログインしようとすると、メッセージが表示されるため、django-social-authが壊れているようです。Incorrect authentication service

バックエンドのコードは次のとおりです。

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スニペットからコードスニペットを取得しました

私のAUTHENTICATION_BACKENDS:

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

1 に答える 1

1

django-social-authでメール認証バックエンドを正常に使用しました。私はそれが機能するために特別なことをしたことを覚えていないので、それは明白ではないかもしれません、これが私のコードで見ることができる唯一の違いです:

私は自分のEメールバックエンドをリストの最初に定義しましたがAUTHENTICATION_BACKENDS、これはここで重要になる可能性があります。

のいずれも定義しませんでしたsupports_object_permissions supports_anonymous_user supports_inactive_user

于 2012-06-14T12:12:53.260 に答える