Передача токена авторизации пользователя в 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)

Вот так же подобное обсуждение

→ Ссылка