code: def _extract_params(self):
          
          # Because in this endpoint we handle both GET
          # and POST request.
          query_dict = (self.request.POST if self.request.method == 'POST'
                        else self.request.GET)
  
          self.params['client_id'] = query_dict.get('client_id', '')
          self.params['redirect_uri'] = query_dict.get('redirect_uri', '')
          self.params['response_type'] = query_dict.get('response_type', '')
          self.params['scope'] = query_dict.get('scope', '').split()
          self.params['state'] = query_dict.get('state', '')
          self.params['nonce'] = query_dict.get('nonce', '')
  
          self.params['prompt'] = self._allowed_prompt_params.intersection(
              set(query_dict.get('prompt', '').split()))
  
          self.params['code_challenge'] = query_dict.get('code_challenge', '')
          self.params['code_challenge_method'] = query_dict.get('code_challenge_method', '')
docs: Get all the params used by the Authorization Code Flow
          (and also for the Implicit and Hybrid).
  
          See: http://openid.net/specs/openid-connect-core-1_0.html#AuthRequest