застрял с написанием аутентификации Facebook в Django - PullRequest
0 голосов
/ 29 января 2012

Это код, который я придумал по мотивам django RemoteUserBacke, и он еще не завершен, я не уверен, где, например, в обычных бэкэндах или в remoteuserbackend, например, откуда именно вызывается метод authenticate? Извините, я новичок в django, и кажется, что пользовательский журнал работает как magic

from django.contrib import ModelBackend      
from django.contrib.auth.models import User, Permission

def facebook_login_required(orig_view):
    def wrapper(request):
        if not request.user.is_authenticated():
            redirect_url = 'https://www.facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s&scope=email,read_stream'%(SETTINGS.FB_APPID,request.getlocation)
            HttpResponseRedirect(redirect_url)
        else:
            # user is logged in, its safe to process the view
            return orig_view
    return wrapper

class FacebookAuthBackend(ModelBackend):
    def authenticate(self,userid):
        """
        The ``userid`` passed here is considered trusted.This method
        simply returns the ``User`` objects with the given id, else
        it creates a new user with the this ``userid`` if the it does
        not existz
        """
        if not userid:
            user = User(userid=userid)
            user.save()
        user = None
        try:
            user = User.objects.get(userid=userid)
        except User.DoesNotExist:
            pass
        return user

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

1 Ответ

0 голосов
/ 27 февраля 2012

Ну, вы всегда можете взглянуть на исходный код и выяснить, как все работает, а с вашим нет

https://github.com/omab/django-social-auth/blob/master/social_auth/backends/facebook.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...