code: def _get_tokens(self, authn_response, context):
          
          if "code" in authn_response:
              # make token request
              args = {
                  "code": authn_response["code"],
                  "redirect_uri": self.client.registration_response['redirect_uris'][0],
              }
  
              token_resp = self.client.do_access_token_request(scope="openid", state=authn_response["state"],
                                                               request_args=args,
                                                               authn_method=self.client.registration_response[
                                                                   "token_endpoint_auth_method"])
  
              self._check_error_response(token_resp, context)
              return token_resp["access_token"], token_resp["id_token"]
  
          return authn_response.get("access_token"), authn_response.get("id_token")
docs: :param authn_response: authentication response from OP
          :type authn_response: oic.oic.message.AuthorizationResponse
          :return: access token and ID Token claims
          :rtype: Tuple[Optional[str], Optional[Mapping[str, str]]]