Перейти к содержанию
Fire Monkey от А до Я

tLink

Пользователи
  • Постов

    3
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные tLink

  1. Всем, добрый день, 

    Хочу сделать кнопку logout.

    Для http запросов использую NetHttpClient, авторизация на OnAuthEvent. Во время работы приложения передаю куки от NetHttpClient в браузер кодом:

    procedure
      {$IFDEF ANDROID}
    var
      CookieSyncManager: JCookieSyncManager;
      CookieManager : JCookieManager;
      Cookie: TCookie;
      {$ENDIF}
    Begin
        {$IFDEF ANDROID}
        if High(NetHTTPClient1.CookieManager.Cookies) >= 0 then
        begin
          Cookie := NetHTTPClient1.CookieManager.Cookies[0];
          CookieSyncManager := TJCookieSyncManager.JavaClass.createInstance(TAndroidHelper.Context);
          CookieManager := TJCookieManager.JavaClass.getInstance;
          CookieManager.setAcceptCookie(True);
    
          CookieManager.setCookie(StringToJString(BaseURL), StringToJString(Cookie.ToString));
          CookieSyncManager.sync();
        end;
        {$ENDIF}
    end;

     

    Очищаю следующим образом: 

     

    procedure TNetModule.LogOut;
    {$IFDEF ANDROID}
    var
      CookieSyncManager: JCookieSyncManager;
      CookieManager : JCookieManager;
      //NeedSync: Boolean;
    {$ENDIF}
    begin  
      // очистить куки ?  
      NetModule.NetHTTPClient1.CredentialsStorage.ClearCredentials;
      NetHTTPClient1.CookieManager.DeleteCookies;
      {$IFDEF ANDROID}
      CookieSyncManager := TJCookieSyncManager.JavaClass.createInstance(TAndroidHelper.Context);
      CookieManager := TJCookieManager.JavaClass.getInstance;
      CookieManager.setAcceptCookie(False);
      if TJBuild_VERSION.JavaClass.SDK_INT < 21 then
        CookieManager.removeAllCookie()
      else
        CookieManager.removeAllCookies(nil);
      CookieSyncManager.Sync();   
      {$ENDIF}
      LoginForm.Show;
    end;

    DeleteCookies выполняется с помощью хелпера:

      // interface
      TCookieManagerHelper = class helper for TCookieManager
        procedure DeleteCookies;
      end;
    
      // implementation
    procedure TCookieManagerHelper.DeleteCookies;
    begin
      with Self do
        FCookies.Clear;
    end;

    Но при новой авторизации событие OnAuthEvent не срабатывает, следовательно можно зайти и вовсе без пароля. Использую Delphi 10.2.2. Проверял на Android 8.0 и 5.0. Кто-нибудь сталкивался с таким?

    ps iPhone тоже есть такая проблема, но хотя бы здесь разобраться. 

     

  2. Всем доброго времени суток,

    Столкнулся с проблемой на iOS. На форме TabControl, на одной из вкладок лежит MapView (примерчик приложил). Если "свернуть/развернуть" приложение и походить по вкладкам, то пропадают иконки у TabControl, показывает как чёрные квадраты. Иконки установлены через ImageList. Такой же эффект и у ListView/Image на соседних вкладках. Можете что-то подсказать?

     

    project1 (2).rar

×
×
  • Создать...