Пример #1
0
def login(request):
    ret = None
    if request.method == 'POST':
        form = FacebookConnectForm(request.POST)
        if form.is_valid():
            try:
                token = form.cleaned_data['access_token']
                g = GraphAPI(token)
                facebook_me = g.get_object("me")
                email = valid_email_or_none(facebook_me.get('email'))
                social_id = facebook_me['id']
                try:
                    account = FacebookAccount.objects.get(social_id=social_id)
                except FacebookAccount.DoesNotExist:
                    account = FacebookAccount(social_id=social_id)
                data = dict(email=email,
                            facebook_access_token=token,
                            facebook_me=facebook_me)
                # some facebook accounts don't have this data
                data.update((k, v) for (k, v) in facebook_me.items()
                            if k in ['username', 'first_name', 'last_name'])
                # Don't save partial/temporary accounts that haven't
                # gone through the full signup yet, as there is no
                # User attached yet.
                if account.pk:
                    account.sync(data)
                ret = complete_social_login(request, data, account)
            except (GraphAPIError, IOError):
                pass
    if not ret:
        ret = render_authentication_error(request)
    return ret
Пример #2
0
def login(request):
    ret = None
    if request.method == 'POST':
        form = FacebookConnectForm(request.POST)
        if form.is_valid():
            token = form.cleaned_data['access_token']
            g = GraphAPI(token)
            facebook_me = g.get_object("me")
            email = valid_email_or_none(facebook_me.get('email'))
            social_id = facebook_me['id']
            try:
                account = FacebookAccount.objects.get(social_id=social_id)
            except FacebookAccount.DoesNotExist:
                account = FacebookAccount(social_id=social_id)
            account.link = facebook_me['link']
            account.name = facebook_me['name']
            if account.pk:
                account.save()
            data = dict(email=email, facebook_me=facebook_me)
            # some facebook accounts don't have this data
            data.update((k,v) for (k,v) in facebook_me.items() if k in ['username', 'first_name', 'last_name'])
            
            ret = complete_social_login(request, data, account)
    if not ret:
        ret = render_authentication_error(request)
    return ret
Пример #3
0
def login(request):
    ret = None
    if request.method == 'POST':
        form = FacebookConnectForm(request.POST)
        if form.is_valid():
            try:
                token = form.cleaned_data['access_token']
                g = GraphAPI(token)
                facebook_me = g.get_object("me")
                email = valid_email_or_none(facebook_me.get('email'))
                social_id = facebook_me['id']
                try:
                    account = FacebookAccount.objects.get(social_id=social_id)
                except FacebookAccount.DoesNotExist:
                    account = FacebookAccount(social_id=social_id)
                data = dict(email=email,
                            facebook_access_token=token,
                            facebook_me=facebook_me)
                # some facebook accounts don't have this data
                data.update((k,v) for (k,v) in facebook_me.items() 
                            if k in ['username', 'first_name', 'last_name'])
                # Don't save partial/temporary accounts that haven't
                # gone through the full signup yet, as there is no
                # User attached yet.
                if account.pk:
                    account.sync(data)
                ret = complete_social_login(request, data, account)
            except (GraphAPIError, IOError):
                pass
    if not ret:
        ret = render_authentication_error(request)
    return ret
Пример #4
0
def login_by_token(request):
    log.debug("login_by_token")
    ret = None
    if request.method == 'POST':
        form = FacebookConnectForm(request.POST)
        if form.is_valid():
            log.debug("Form is valid")
            try:
                app = providers.registry.by_id(FacebookProvider.id) \
                    .get_app(request)
                log.debug("App exists")
                access_token = form.cleaned_data['access_token']
                log.debug("access token exists")
                token = SocialToken(app=app,
                                    token=access_token)
                log.debug("social token created")
                login = fb_complete_login(app, token)
                log.debug("fb login complete")
                login.token = token
                login.state = SocialLogin.state_from_request(request)
                ret = complete_social_login(request, login)
            except:
                # FIXME: Catch only what is needed
                pass
    if not ret:
        log.debug("authentication error")
        ret = render_authentication_error(request)
    return ret
Пример #5
0
def login(request):
	ret = None
	if request.method == 'POST':
		form = FacebookConnectForm(request.POST)
		if form.is_valid():
			token = form.cleaned_data['access_token']
			g = GraphAPI(token)
			data = g.get_object("me")
			email = valid_email_or_none(data.get('email'))
			social_id = data['id']
			try:
				account = FacebookAccount.objects.get(social_id=social_id)
			except FacebookAccount.DoesNotExist:
				account = FacebookAccount(social_id=social_id)
			account.link = data['link']
			account.name = data['name']
			#adding the storing of users accesstoken
			account.access_token = token
			if account.pk:
				account.save()
			data = dict(email=email,facebook_me=data)
			ret = complete_social_login(request, data, account)
	if not ret:
		ret = render_authentication_error(request)
	return ret
Пример #6
0
def login(request):
    ret = None
    if request.method == 'POST':
        form = FacebookConnectForm(request.POST)
        if form.is_valid():
            token = form.cleaned_data['access_token']
            g = GraphAPI(token)
            facebook_me = g.get_object("me")
            email = valid_email_or_none(facebook_me.get('email'))
            social_id = facebook_me['id']
            try:
                account = FacebookAccount.objects.get(social_id=social_id)
            except FacebookAccount.DoesNotExist:
                account = FacebookAccount(social_id=social_id)
            account.link = facebook_me['link']
            account.name = facebook_me['name']
            if account.pk:
                account.save()
            data = dict(email=email, facebook_me=facebook_me)
            # some facebook accounts don't have this data
            data.update((k, v) for (k, v) in facebook_me.items()
                        if k in ['username', 'first_name', 'last_name'])
            ret = complete_social_login(request, data, account)
    if not ret:
        ret = render_authentication_error(request)
    return ret
Пример #7
0
def login_by_token(request):
    ret = None
    if request.method == 'POST':
        form = FacebookConnectForm(request.POST)
        if form.is_valid():
            try:
                app = providers.registry.by_id(FacebookProvider.id) \
                    .get_app(request)
                login = fb_complete_login(app, 
                                          form.cleaned_data['access_token'])
                ret = complete_social_login(request, login)
            except:
                # FIXME: Catch only what is needed
                pass
    if not ret:
        ret = render_authentication_error(request)
    return ret
Пример #8
0
def login_by_token(request):
    ret = None
    if request.method == 'POST':
        form = FacebookConnectForm(request.POST)
        if form.is_valid():
            try:
                app = providers.registry.by_id(FacebookProvider.id) \
                    .get_app(request)
                access_token = form.cleaned_data['access_token']
                token = SocialToken(app=app, token=access_token)
                login = fb_complete_login(app, token)
                login.token = token
                login.state = SocialLogin.state_from_request(request)
                ret = complete_social_login(request, login)
            except:
                # FIXME: Catch only what is needed
                pass
    if not ret:
        ret = render_authentication_error(request)
    return ret
Пример #9
0
def login(request):
    ret = None
    if request.method == 'POST':
        form = FacebookConnectForm(request.POST)
        if form.is_valid():
            token = form.cleaned_data['access_token']
            g = GraphAPI(token)
            data = g.get_object("me")
            email = valid_email_or_none(data.get('email'))
            social_id = data['id']
            try:
                account = FacebookAccount.objects.get(social_id=social_id)
            except FacebookAccount.DoesNotExist:
                account = FacebookAccount(social_id=social_id)
            account.link = data['link']
            account.name = data['name']
            if account.pk:
                account.save()
            data = dict(email=email, facebook_me=data)
            ret = complete_social_login(request, data, account)
    if not ret:
        ret = render_authentication_error(request)
    return ret