Передача токена авторизации пользователя в webview
Часть приложения сделана на нативе, включая авторизации. Другая часть - бронирование услуг происходит через веб-вью. Задача сделать так, чтобы пользователь мог авторизоваться в самом приложении и ему не приходилось проходить повторную авторизацию в веб-вью при бронировании услуги, как можно безопасно это сделать?
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
Для того чтобы в заголовках добавить ваш токен можно использовать метод вебвью в котором кроме загрузки урла будет добавлен ваш токен. Приблизительно так:
val bearer = "Bearer " + context!!.getSharedPreferences(Constants.SHARED_PREFS_STORAGE, 0).getString("access_token", "")!!
val headerMap = HashMap<String, String>()
headerMap["Authorization"] = bearer
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
view.loadUrl(url, headerMap)
return true
}
override fun onPageFinished(view: WebView?, url: String?) {
}
override fun shouldInterceptRequest(view: WebView?, request: WebResourceRequest?): WebResourceResponse? {
return null
}
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
}
}
и дальше делаете загрузку самого урла:
webView.loadUrl(link, headerMap)
и при запросе для загрузки страницы будет добавлен ваш токен. Сам метод который я предлагаю выглядит так:
loadUrl(String url, Map<String, String> extraHeaders)
Вот так же подобное обсуждение