oauth2lib/provider.py
def get_authorization_code(self,
                               response_type,
                               client_id,
                               redirect_uri,
                               **params):
        """Generate authorization code HTTP response.

        :param response_type: Desired response type. Must be exactly "code".
        :type response_type: str
        :param client_id: Client ID.
        :type client_id: str
        :param redirect_uri: Client redirect URI.
        :type redirect_uri: str
        :rtype: requests.Response
        """

        # Ensure proper response_type
        if response_type != 'code':
            err = 'unsupported_response_type'
            return self._make_redirect_error_response(redirect_uri, err)

        # Check redirect URI
        is_valid_redirect_uri = self.validate_redirect_uri(client_id,
                                                           redirect_uri)
        if not is_valid_redirect_uri:
            return self._invalid_redirect_uri_response()

        # Check conditions
        is_valid_client_id = self.validate_client_id(client_id)
        is_valid_access = self.validate_access()
        scope = params.get('scope', '')
        is_valid_scope = self.validate_scope(client_id, scope)

        # Return proper error responses on invalid conditions
        if not is_valid_client_id:
            err = 'unauthorized_client'
            return self._make_redirect_error_response(redirect_uri, err)

        if not is_valid_access:
            err = 'access_denied'
            return self._make_redirect_error_response(redirect_uri, err)

        if not is_valid_scope:
            err = 'invalid_scope'
            return self._make_redirect_error_response(redirect_uri, err)

        # Generate authorization code
        code = self.generate_authorization_code()

        # Save information to be used to validate later requests
        self.persist_authorization_code(client_id=client_id,
                                        code=code,
                                        scope=scope)

        # Return redirection response
        params.update({
            'code': code,
            'response_type': None,
            'client_id': None,
            'redirect_uri': None
        })
        redirect = utils.build_url(redirect_uri, params)
        return self._make_response(headers={'Location': redirect},
                                   status_code=302)
def get_authorization_code(self,
                               response_type,
                               client_id,
                               redirect_uri,
                               **params):
        # Ensure proper response_type
        if response_type != 'code':
            err = 'unsupported_response_type'
            return self._make_redirect_error_response(redirect_uri, err)

        # Check redirect URI
        is_valid_redirect_uri = self.validate_redirect_uri(client_id,
                                                           redirect_uri)
        if not is_valid_redirect_uri:
            return self._invalid_redirect_uri_response()

        # Check conditions
        is_valid_client_id = self.validate_client_id(client_id)
        is_valid_access = self.validate_access()
        scope = params.get('scope', '')
        is_valid_scope = self.validate_scope(client_id, scope)

        # Return proper error responses on invalid conditions
        if not is_valid_client_id:
            err = 'unauthorized_client'
            return self._make_redirect_error_response(redirect_uri, err)

        if not is_valid_access:
            err = 'access_denied'
            return self._make_redirect_error_response(redirect_uri, err)

        if not is_valid_scope:
            err = 'invalid_scope'
            return self._make_redirect_error_response(redirect_uri, err)

        # Generate authorization code
        code = self.generate_authorization_code()

        # Save information to be used to validate later requests
        self.persist_authorization_code(client_id=client_id,
                                        code=code,
                                        scope=scope)

        # Return redirection response
        params.update({
            'code': code,
            'response_type': None,
            'client_id': None,
            'redirect_uri': None
        })
        redirect = utils.build_url(redirect_uri, params)
        return self._make_response(headers={'Location': redirect},
                                   status_code=302)
def get_authorization_code ( self , response_type , client_id , redirect_uri , * * params ) : # Ensure proper response_type if response_type != 'code' : err = 'unsupported_response_type' return self . _make_redirect_error_response ( redirect_uri , err ) # Check redirect URI is_valid_redirect_uri = self . validate_redirect_uri ( client_id , redirect_uri ) if not is_valid_redirect_uri : return self . _invalid_redirect_uri_response ( ) # Check conditions is_valid_client_id = self . validate_client_id ( client_id ) is_valid_access = self . validate_access ( ) scope = params . get ( 'scope' , '' ) is_valid_scope = self . validate_scope ( client_id , scope ) # Return proper error responses on invalid conditions if not is_valid_client_id : err = 'unauthorized_client' return self . _make_redirect_error_response ( redirect_uri , err ) if not is_valid_access : err = 'access_denied' return self . _make_redirect_error_response ( redirect_uri , err ) if not is_valid_scope : err = 'invalid_scope' return self . _make_redirect_error_response ( redirect_uri , err ) # Generate authorization code code = self . generate_authorization_code ( ) # Save information to be used to validate later requests self . persist_authorization_code ( client_id = client_id , code = code , scope = scope ) # Return redirection response params . update ( { 'code' : code , 'response_type' : None , 'client_id' : None , 'redirect_uri' : None } ) redirect = utils . build_url ( redirect_uri , params ) return self . _make_response ( headers = { 'Location' : redirect } , status_code = 302 )
Generate authorization code HTTP response.

        :param response_type: Desired response type. Must be exactly "code".
        :type response_type: str
        :param client_id: Client ID.
        :type client_id: str
        :param redirect_uri: Client redirect URI.
        :type redirect_uri: str
        :rtype: requests.Response
Generate authorization code HTTP response .