Beispiel #1
0
    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
Beispiel #2
0
    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
        )
Beispiel #3
0
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