我需要在自定义标签中打开一个网页。但是,该页面显然需要用户登录。我们不希望要求我们的用户登录,而是希望将令牌设置为使用令牌到CustomTab,以便自动记录。 我已经阅读了答案here,说这是不可能的。我理解正确吗?有没有办法实现这个目标?
编辑:我在@Aris Panayiotou的回答之后尝试了这个,但它没有用。我在这里做错了什么?private void openWebView() {
if (getActivity() != null) {
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager );
String cookieStringTakenFromWeb = "some cookie string with correct token";
CookieStore cookieStore = cookieManager.getCookieStore();
HttpCookie cookie = new HttpCookie("Cookie", cookieStringTakenFromWeb);
cookieStore.add(URI.create(Util.getString(R.string.myUrl)), cookie);
final CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder(mCustomTabsSession)
.setToolbarColor(ContextCompat.getColor(getActivity(), R.color.red))
.setShowTitle(true)
.build();
customTabsIntent.launchUrl(getActivity(), Uri.parse(Util.getString(R.string.myUrl)));
}
}
答案 0 :(得分:1)
如果您可以更新网站代码以读取标头,则可以在请求标头中传递令牌。
val customTabsIntent = CustomTabsIntent.Builder(session).build()
val headersBundle = Bundle().apply {
putString("X-Session-Token", "token")
}
customTabsIntent.intent.putExtra(android.provider.Browser.EXTRA_HEADERS, headersBundle)
答案 1 :(得分:0)
根据您对问题的理解,您可以尝试 CookieHandler 。 CookieHandler对象提供了一种回调机制,用于将HTTP状态管理策略实现连接到HTTP协议处理程序。 HTTP状态管理机制指定了一种使用HTTP请求和响应创建有状态会话的方法。
点击此链接阅读更多内容:CookieHandler
和 CookieManager 了解详情:CookieManager