code: def get_auth_uri(self, state, scopes=None, implicit=False):
          
          if state is None or state == '':
              raise AttributeError('"state" must be non empty, non None string')
  
          scopes_list = [] if not scopes else scopes
          response_type = 'code' if not implicit else 'token'
  
          # generate the auth URI
          auth_uri = '%s?response_type=%s&redirect_uri=%s&client_id=%s%s%s' % (
              self.oauth_authorize,
              response_type,
              quote(self.redirect_uri, safe=''),
              self.client_id,
              '&scope=%s' % '+'.join(scopes_list) if scopes else '',
              '&state=%s' % state
          )
  
          # add code challenge if we have one
          if self.secret_key is None and not implicit:
              auth_uri += '&code_challenge_method=S256&code_challenge=%s' % (
                  generate_code_challenge(self.code_verifier)
              )
          return auth_uri
docs: Constructs the full auth uri and returns it..
  
          Parameters
          ----------
          state : string
              The state to pass through the auth process
          scopes : list (optional)
              The list of scope to have
          implicit : Boolean (optional)
              Activate or not the implicit flow
  
          Returns
          -------
          String
              The generated URL for the user to log into EVE SSO