def authorize_access_token(self, **kwargs): """Authorize access token.""" if self.request_token_url: request_token = self._fetch_request_token() params = request.args.to_dict(flat=True) else: request_token = None if request.method == 'GET': params = {'code': request.args['code']} request_state = request.args.get('state') else: params = {'code': request.form['code']} request_state = request.form.get('state') # verify state state_key = '_{}_state_'.format(self.name) state = session.pop(state_key, None) if state != request_state: raise MismatchingStateError() if state: params['state'] = state cb_key = '_{}_callback_'.format(self.name) redirect_uri = session.pop(cb_key, None) params.update(kwargs) token = self.fetch_access_token(redirect_uri, request_token, **params) self.token = token return token
def authorize_access_token(self, request, **kwargs): """Fetch access token in one step. :param request: HTTP request instance from Django view. :return: A token dict. """ if self.request_token_url: key = '_{}_req_token_'.format(self.name) request_token = request.session.pop(key, None) params = request.GET.dict() else: request_token = None if request.method == 'GET': params = {'code': request.GET.get('code')} request_state = request.GET.get('state') else: params = {'code': request.POST.get('code')} request_state = request.POST.get('state') key = '_{}_state_'.format(self.name) state = request.session.pop(key, None) if state != request_state: raise MismatchingStateError() if state: params['state'] = state key = '_{}_callback_'.format(self.name) redirect_uri = request.session.get(key, None) params.update(kwargs) return self.fetch_access_token( redirect_uri, request_token, **params )
def _generate_oauth2_access_token_params(name, request): if request.method == 'GET': params = {'code': request.GET.get('code')} request_state = request.GET.get('state') else: params = {'code': request.POST.get('code')} request_state = request.POST.get('state') state_key = _state_tpl.format(name) state = request.session.pop(state_key, None) if state != request_state: raise MismatchingStateError() if state: params['state'] = state vf_key = _code_verifier_tpl.format(name) code_verifier = request.session.pop(vf_key, None) if code_verifier: params['code_verifier'] = code_verifier return params