Delphi авторизация на сайте https

Точно нету?)
Обычно должно быть там где описывается какие параметры отправлять и т.д.

Точно нету… Позвонил эту госудаствени кантора (на телефоне отвечает женщина ) она не может отвечать на моего вопроса и говорят что я отправил всё подробно на почте…
Знаешь что странно и обидно . Я предлагаю им что давались доступ на их СУБД и я без этого линковал бы на их субд написал бы триггер что при каждом INSERT -е передалось бы данных у них… Зачем бы это дебилства ? Если бы они не дают доступ на свой сервере - Я магу давать доступ только для чтения -чтобы при SELECT -собрали данных , даже я готов написать этот запрос… Зачем это нужно :joy: когда прямо можно из субд отправить данных на другом субд…

Ну так сейчас редко делают, обычно прямой доступ к БД вообще закрыт извне.

Этого может быть недостаточно.
Например, если каждому пользователю должны быть доступны только связанные с ним данные, то получив доступ к таблицам он получит доступ и к чужим данным.

Да и тут же нужны были бы и права на запись, если

Не знаю может и так . Но мне по другому кажется :wink: ладно дружащий - спасибо вам огромное . напишу у них что мои “творение” не заработало - всё подробно как и есть… Надеюсь что они мне что то полезного скажут .

Оно там может как-нибудь по-другому называться, например, “ресурс”.

Но вообще обычно документация выглядит примерно так:

Смотрю ваши картинку…
– Перехожу на сайте у меня
– На 1-ом картинке когда я захожу на сервере . на 2-ом когда я авторизовался
– Смотрю URL и сравниваю - они одинаковы



Это URL который при авторизации . Не понял где смотреть тот url который надо передать put

Что то нашел на сайте - силка на docs


наверно это ? попробую

,"/api/test/branches/{branchNo}/customers/{customerMiaId}/items/{itemMiaId}":{"put":{"tags":["Customers"],"summary":"

А где про этот запрос написано?

Оно наверно внизу, внутри секций Customers, Report и т.д.

Этого ?

Я его нашел … Спасибо огромное… Попробую :wink:

[Alex P.] у меня “вопрос” помните, пока я разобрал авторизации через Delphi вы мне показались как проверить запрос на

curl
-d “username=xx@gmail.com
-d “password=xxx”

Я проверял параметры авторизации через curl и увиделись что всё правильно и потом начинал реализовать через Delphi . Есть такой утилит где можно проверять после авторизации параметров передача данных ?

{
  "birthDate": "2021-03-20",
  "citizenship": "GEO",
  "customerId": "string",
  "firstName": "string",
  "itemList": [
    {
      "createDate": "2021-03-20",
      "currency": "GEL",
      "info": "string",
      "itemId": "string",
      "photos": [
        {
          "data": "R0lGODdhAQABAPAAAP8AAAAAACwAAAAAAQABAAACAkQBADs=",
          "name": "Kohinoor.jpeg"
        }
      ],
      "price": "string",
      "subType": "string",
      "type": "string"
    }
  ],
  "lastName": "string",
  "personalNo": "string",
  "phone": "string",
  "realAddress": "string"
}

и URL
/api/test/branches/{branchNo}/customers
Просто документация который на сайте у них ! Там по другому JSON скрипт и URL тоже .! А документации который передали .PDF там по другому - и есть путаница какой параметр надо передать каким URL-ом… можно или нет протестировать это JSON и URL без Delphi хочу понят у меня JSON параметре ошибка ? или URL-е или на Delphi

Постман удобнее всего, там можно сохранять запросы и т.д.

Авторизация как на скриншоте по идее должна работать Delphi авторизация на сайте https - #12 от пользователя xxbesoxx

Может например это не было указано?

image

1 лайк

Спасибо, буду проверять :wink: если будет вопроси напишу … Удачного вам дня :handshake:

Переделал код вот так , просто передаю JSON через SuperObject.pas написал у них - чтобы проверяли (приходит или нет данных который я отправляю) ответили что: данных они получает, просто иероглифы приходит и надо передать данных через кодировку UTF-8 и всё будет нормально рабочий код выложу : Пожалуйста

procedure TForm1.Button1Click(Sender: TObject);
  var
    MyParams :  TStringList;
     //--- JSON
     JSONObject, RequestBody: ISuperObject;
     //--- Для отправка данных на сервере
     SendJS: TStringStream;
begin
  try
    // ---TStringList Создать
    MyParams:= TStringList.Create;
    //---- Всё параметри внимательно
    MyParams.Add('username=xxxxxxxxx@gmail.com') ;
    MyParams.Add('password=***********');
    MyParams.Add('client_id=lombard-service') ;
    MyParams.Add('client_secret=7676a315-eb0e-4123-bcbf-e5ee8710a422');
    MyParams.Add('grant_type=password') ;
  //--------HandleRedirects := true; ----------------------
   IdHTTP1.HandleRedirects := true;
   // --------Только это для SSL -----------
   IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
  //--Без этого тоже работает. Но я добавил что запрос отправил utf-8 -------------------
     IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
     IdHTTP1.Request.Charset := 'utf-8';
    // Хранить тексть запроса на
    Memo1.Text := IdHTTP1.Post('https://accounts.police.ge/auth/realms/company/protocol/openid-connect/token', MyParams);
    //--------Создать----------
    JSONObject:=TSuperObject.Create;
    //---Передать все тексть
    JSONObject:=SO(Memo1.Text);
    //----Получить только  access_token   Memo2.Text
    Memo2.Text:=JSONObject.S['access_token'];

  finally
     MyParams.Free;
  end;
  //--------------------------------
  idHTTP1.Request.Clear;

//------------
  idHTTP1.Request.CustomHeaders.FoldLines := False;      // access_token передаю из Memo2.Text 
  idHTTP1.Request.CustomHeaders.Values['Authorization'] := 'Bearer '  + Memo2.Text;
  //----------------------------------------------------------------
  if Trim(Memo2.Text)<> '' then
  begin
  try
  RequestBody := SO ('{"personalNo": "31001057491", '+
                      ' "firstName": "Имя", '+
                      ' "lastName": "Фамилия", '+
                      ' "birthDate": "2021-03-18", '+
                      ' "citizenship": "USD", '+
                      ' "phone": "577397046", '+
                      ' "realAddress": "Адрес клиента", '+
                      ' "customerId": "65152", '+
                      ' "itemList": [ '+
                      ' { "type": "itemTechnic", '+
                      ' "subType": "Название", '+
                      ' "createDate": "2021-03-18", '+
                      ' "brand": "Apple", '+
                      ' "model": "iPhone 12", '+
                      ' "serialNumber": "123456789", '+
                      ' "price": "250.00", '+
                      ' "currency": "USD", '+
                      ' "info": "какой то коментар", '+
                      ' "itemId": "1296", '+
                      ' "photos": [ '+
                      ' { '+
                      ' "data": "R0lGODdhAQABAPAAAP8AAAAAACwAAAAAAQABAAACAkQBADs=", '+
                      ' "name": "Kohinoor.jpeg" '+
                      ' } '+
                      ' ], '+
                      ' }]}  ');

      SendJS := TStringStream.Create(RequestBody.AsString);
      idHTTP1.Request.ContentType := 'application/json';
      idHTTP1.Request.ContentEncoding := 'utf-8';                                     
      idHTTP1.post('https://api.pol.ge/api/test/branches/1/customers',  SendJS );
    except
      raise Exception.Create('Ошибка передачу JSON параметров');

  end;
  end;
end;

Вроде я указал UTF-8 не знаю почему так… Но с этом я разберусь удачного всем дня .

@xxbesoxx, а Delphi у Вас какая версия? Если старенькая (до 2010), то там строки по умолчанию не уникодные, нужно перекодировать.
Для отладки сохраните вашу строчку с JSON в текстовый файл и посмотрите, какая там будет кодировка у русских (или грузинских ;)) буковок.

У меня XE3 просто я забил перекодировать JSON вот TEncoding.UTF8

 SendJS := TStringStream.Create(RequestBody.AsString , TEncoding.UTF8);

У всё нормально работает … Удачного всем дня ребята и спасибо всем :two_hearts:

1 лайк