Задать вопрос
gold_dezmor
@gold_dezmor
Digital director / Product manager

Как правильно использовать компонент Chromium в Delphi?

Добрый день!

Установил компонент Chromium для Delphi.

Работает быстро, но возникла проблема с сохранением Cookies.

Согласно инструкции на сайте parsing-and-i.blogspot.ru/2013/01/tchromium-cookie...

Использовал код из примера на событии OnClick кнопки:

procedure TDeliveryForm.sBitBtn1Click(Sender: TObject);
var
CookieManager: ICefCookieManager;
CookiesPath  : String;
begin
      CookiesPath := ExtractFilePath(Application.ExeName) + DefaultCookiesDir + 'Ddelivery';
      CookieManager := TCefCookieManagerRef.Global(nil);
      CookieManager.SetStoragePath(CookiesPath, True, nil);
      Chromium1.Load('https://cabinet.ddelivery.ru/');
end;


Папка и файлы Cookies программой создаются, но при следующем запуске сбрасывается авторизация на запрошенном сайте.

Что делаю не так?

На просторах интернета только эта инструкция и ей подобные.
Мне всего то и требуется чтобы авторизация не сбрасывалась каждый раз..
  • Вопрос задан
  • 6194 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
gold_dezmor
@gold_dezmor Автор вопроса
Digital director / Product manager
Ну собственно разобрался..

procedure TDeliveryForm.sBitBtn1Click(Sender: TObject);
var
CookieManager: ICefCookieManager;
CookiesPath  : String;
CefBack: ICefCompletionCallback;
begin
      CookiesPath := ExtractFilePath(Application.ExeName) + DefaultCookiesDir + 'Site1'; // Задаем путь к "печенькам"
    //  ForceDirectoriesUTF8(CookiesPath); // если пути нет то создаем его
      CookieManager := TCefCookieManagerRef.Global(CefBack); // подключаемся к менеджеру печенек
      CookieManager.SetStoragePath(CookiesPath, True, CefBack); // устанавливаем путь к хранилищу "печенек"
      Chromium1.Load('https://cabinet.SITE.ru/user');   // загрузка страницы
end;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ArtLivinov
Для CEF3 файл с куками можно устанавливать кодом
procedure TForm1.Button1Click(Sender: TObject);
var
  CookieManager: ICefCookieManager;
  CookiesPath: String;
begin
  CookiesPath:= ExtractFilePath(Application.ExeName) + 'dirForCookie1\';//DefaultCookiesDir
  CookieManager:= TCefCookieManagerRef.Global(nil);
  CookieManager.SetStoragePath(CookiesPath,False,nil);
end;

Проверено. Код взял отсюда blog.ivru.net/?id=211 там же в статье есть более подробное описание как присваиваются куки, в частности что те которые были о нажатия кнопки затрутся. А так же есть код как доставать куки которые уже установлены для компонента, в том числе те которые находятся в файле.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы