def dispatch(self, request): if 'error' in request.GET or not 'code' in request.GET: # TODO: Distinguish cancel from error return render_authentication_error(request) app = self.adapter.get_provider().get_app(self.request) client = self.get_client(request, app) try: r = praw.Reddit('OAuth Sketchdaily Schedule by u/davidwinters ver 0.1.') r.set_oauth_app_info(client.consumer_key, client.consumer_secret, 'http://themes.sketchdaily.net/accounts/redditprovider/login/callback/') access_token = r.get_access_information(request.GET['code']) user = r.get_me() extra = r.get_my_moderation() # access_token = client.get_access_token(request.GET['code']) token = SocialToken(token=access_token) #token = self.adapter.parse_token(access_token) token.app = app login = self.adapter.complete_login(request, app, token, response=access_token, user=user, extra=extra) token.account = login.account login.token = token login.state = SocialLogin.unmarshall_state(request.REQUEST .get('uniqueKey')) return complete_social_login(request, login) except OAuth2Error: return render_authentication_error(request)
def dispatch(self, request): """ View to handle final steps of OAuth based authentication where the user gets redirected back to from the service provider """ login_done_url = reverse(self.adapter.provider_id + "_callback") client = self._get_client(request, login_done_url) log.debug("got client") if not client.is_valid(): if "denied" in request.GET: return HttpResponseRedirect(reverse("socialaccount_login_cancelled")) extra_context = dict(oauth_client=client) log.debug("Twitter says 'denied'") return render_authentication_error(request, extra_context) app = self.adapter.get_provider().get_app(request) try: access_token = client.get_access_token() log.debug("got access token") token = SocialToken( app=app, token=access_token["oauth_token"], token_secret=access_token["oauth_token_secret"] ) login = self.adapter.complete_login(request, app, token) token.account = login.account login.token = token login.state = SocialLogin.unmarshall_state(request.session.pop("oauth_login_state", None)) return complete_social_login(request, login) except OAuthError, e: log.debug("Oauth error") log.debug(e) return render_authentication_error(request)
def dispatch(self, request): if 'error' in request.GET or not 'code' in request.GET: # TODO: Distinguish cancel from error return render_authentication_error(request) app = self.adapter.get_provider().get_app(self.request) client = self.get_client(request, app) try: r = praw.Reddit( 'OAuth Sketchdaily Schedule by u/davidwinters ver 0.1.') r.set_oauth_app_info( client.consumer_key, client.consumer_secret, 'http://themes.sketchdaily.net/accounts/redditprovider/login/callback/' ) access_token = r.get_access_information(request.GET['code']) user = r.get_me() extra = r.get_my_moderation() # access_token = client.get_access_token(request.GET['code']) token = SocialToken(token=access_token) #token = self.adapter.parse_token(access_token) token.app = app login = self.adapter.complete_login(request, app, token, response=access_token, user=user, extra=extra) token.account = login.account login.token = token login.state = SocialLogin.unmarshall_state( request.REQUEST.get('uniqueKey')) return complete_social_login(request, login) except OAuth2Error: return render_authentication_error(request)
def dispatch(self, request): if 'error' in request.GET or not 'code' in request.GET: # TODO: Distinguish cancel from error return render_authentication_error(request) app = self.adapter.get_provider().get_app(self.request) client = self.get_client(request, app) try: access_token = client.get_access_token(request.GET['code']) token = SocialToken(app=app, token=access_token) login = self.adapter.complete_login(request, app, token) token.account = login.account login.token = token login.state = SocialLogin.unmarshall_state( request.REQUEST.get('state')) return complete_social_login(request, login) except OAuth2Error: return render_authentication_error(request)
def callback(request): client = _openid_consumer(request) response = client.complete( dict(request.REQUEST.items()), request.build_absolute_uri(request.path)) if response.status == consumer.SUCCESS: user = User(email=_get_email_from_response(response)) account = SocialAccount(uid=response.identity_url, provider=OpenIDProvider.id, user=user, extra_data={}) login = SocialLogin(account) login.state = SocialLogin.unmarshall_state(request.REQUEST.get('state')) ret = complete_social_login(request, login) elif response.status == consumer.CANCEL: ret = HttpResponseRedirect(reverse('socialaccount_login_cancelled')) else: ret = render_authentication_error(request) return ret
def dispatch(self, request): if 'error' in request.GET or not 'code' in request.GET: # TODO: Distinguish cancel from error return render_authentication_error(request) app = self.adapter.get_provider().get_app(self.request) client = self.get_client(request, app) try: access_token = client.get_access_token(request.GET['code']) token = SocialToken(app=app, token=access_token) login = self.adapter.complete_login(request, app, token) token.account = login.account login.token = token login.state = SocialLogin.unmarshall_state(request.REQUEST .get('state')) return complete_social_login(request, login) except OAuth2Error: return render_authentication_error(request)