Last major update: 25.08.2020
- Что такое авторизация/аутентификация
- Где хранить токены
- Как ставить куки ?
- Процесс логина
- Процесс рефреш токенов
- Кража токенов/Механизм контроля токенов
Данный гист содержит основную информацию, которую нужно знать о Java Standart Edition.
| void main() { | |
| runApp(MyApp()); | |
| } | |
| class MyApp extends StatelessWidget { | |
| @override | |
| Widget build(BuildContext context) { | |
| return MaterialApp( | |
| title: 'Flutter Demo', | |
| theme: ThemeData( |
| public abstract class BaseObservable<LISTENER_CLASS> { | |
| private final Object MONITOR = new Object(); | |
| private final Set<LISTENER_CLASS> mListeners = new HashSet<>(); | |
| public void registerListener(LISTENER_CLASS listener) { | |
| synchronized (MONITOR) { | |
| boolean hadNoListeners = mListeners.size() == 0; | |
| mListeners.add(listener); |
| import android.os.Bundle | |
| import androidx.fragment.app.Fragment | |
| import androidx.fragment.app.activityViewModels | |
| import androidx.fragment.app.viewModels | |
| import androidx.lifecycle.AbstractSavedStateViewModelFactory | |
| import androidx.lifecycle.SavedStateHandle | |
| import androidx.lifecycle.ViewModel | |
| import androidx.lifecycle.ViewModelProvider | |
| import androidx.savedstate.SavedStateRegistryOwner |
| MutableLiveData Example |
|---|
![]() |
| import android.annotation.SuppressLint; | |
| import android.app.Activity; | |
| import android.os.Bundle; | |
| import android.webkit.WebChromeClient; | |
| import android.webkit.WebSettings; | |
| import android.webkit.WebView; | |
| import android.webkit.WebViewClient; | |
| public class MainActivity extends Activity { | |
| private WebView webview; |
| package com.example.sellectorsample; | |
| import android.app.Activity; | |
| import android.os.Bundle; | |
| import android.view.View; | |
| import android.view.View.OnClickListener; | |
| import android.widget.Button; | |
| import android.widget.TextView; | |
| public class MainActivity extends Activity implements OnClickListener { |
| /* Module level build.gradle */ | |
| android { | |
| defaultConfig { | |
| ... | |
| flavorDimensions "default" | |
| } | |
| signingConfigs { |
| /* | |
| * Automates generation of Release APK | |
| * ./gradlew assembleRelease | |
| * */ | |
| Properties props = new Properties() | |
| def userHome = Paths.get(System.getProperty('user.home')); | |
| def propFile = file(userHome.resolve('PATH_TO_SIGNING_CONFIG_PROPERTIES_FILE.properties')) | |
| if (propFile.canRead()) { | |
| props.load(new FileInputStream(propFile)) | |
| if (props != null && props.containsKey('STORE_FILE') && props.containsKey('KEY_STORE_PASSWORD') |