#android #webview #apk #single-sign-on #deep-linking
Вопрос:
Я не могу размножаться по требованию, но, как правило, этот сценарий в конечном итоге приводит к размножению:
- Войдите в приложение с помощью Google (использует пользовательскую вкладку Chrome и протокол глубокой привязки).
- Сверните приложение
- Через некоторое время (ВАЖНО, по крайней мере, через несколько минут, но дольше, чем вы думаете) снова откройте его
- Обратите внимание, что вы находитесь на экране входа в систему и видите общую ошибку формы
- Ошибка возникает в /вход-google (настроенная конечная точка для единого входа Google), что означает, что по какой-то причине приложение пыталось перейти к конечной точке входа google
Ошибка:
08/13/2021 07:16:08 - Home/Error Path:/signin-google
08/13/2021 07:16:08 - An error was encountered while handling the remote login. - at Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.HandleRequestAsync()
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
08/13/2021 07:16:08 - The oauth state was missing or invalid. -
08/13/2021 07:16:08 - Login failed
Код активности приложения для Android:
override fun onStart() {
super.onStart();
setVisible(true);
}
override fun onResume() {
var data = getIntent().getData();
setVisible(true)
super.onResume();
isInForeground = true;
}
override fun onPause() {
super.onPause();
isInForeground = false
}
public override fun onDestroy() {
super.onDestroy()
this.unregisterReceiver(receiver)
BackgroundService.CancelAlarm(this);
}
@RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var data = getIntent().getData();
if(data != null){
var url = data.toString().replace(DEEPLINK_PROTOCOL,IDP_URL_BASE);
intentUrl = url;
}
this.setUpAds();
this.setUpWebView();
this.setUpProgressBar();
this.setUpBroadcastReceiver();
startService( Intent(this, BackgroundService::class.java));
}