from django.shortcuts import redirect from django.contrib import auth from django.views.decorators.cache import never_cache from django.conf import settings from test_oauth.session import TESTOAuth2Session @never_cache def login(request, next=None): authorization_url, request.session['oauth_state'] = TESTOAuth2Session( scope=['read_profile'], ).authorization_url() return redirect(authorization_url) @never_cache def logout(request): if request.user.is_authenticated(): auth.logout(request) return redirect(getattr(settings, 'TEST_OAUTH_REDIRECT', '/')) @never_cache def callback(request): token = ( TESTOAuth2Session(state=request.session['oauth_state']) .fetch_token(code=request.GET['code']) ) session = TESTOAuth2Session(token=token) auth.login(request, auth.authenticate(**session.profile)) return redirect(getattr(settings, 'TEST_OAUTH_REDIRECT', '/'))