【问题标题】:How to use js bridge in chrome custom tab如何在chrome自定义选项卡中使用js桥
【发布时间】:2019-11-19 13:31:01
【问题描述】:

Android webView 不支持 Google oAuth。 Google 建议使用 chrome 自定义选项卡进行 oAuth。我也有从我的网络应用程序到本机的 js 调用的要求。如何配置使用android中的chrome自定义选项卡从Web应用程序调用本机方法,类似于webView中的js接口?

更新 1

此模组Chang 将帖子标记为重复,但帖子不同。我不想在我的网络应用程序中从本机运行任何 JS。我想通过 JS 接口从 Web 应用程序调用方法到我的本机代码。 CCT有什么办法吗?

【问题讨论】:

  • @MorrisonChang 您标记的帖子指出了不同的问题。请看我的更新。请求恢复您的接近投票。
  • 不清楚invoke method from web app to my native code via JS interface 不会出现与链接副本相同的安全问题,因为这会假定 Web 内容“知道”Web 容器之外的某些内容(并返回结果)。我认为您只能使用已知的 Web API(相机、设备方向等)和 URI 拦截。
  • @MorrisonChang 我的建议是,请在评论/答案中讨论,或者如果您觉得在匆忙将其标记为重复之前编辑帖子。这是一个针对单流的特定问题,其中原生无法更改 Web 应用程序或任何东西(即 js 注入)。在您标记的帖子中与我的问题无关的大多数投票答案中还没有选定的答案和安全问题。再次请求您以尊重的态度回复您的投票。
  • Unclear how invoke method from web app to my native code via JS interface wouldn't have the same security issues as in linked duplicate ... 因为通信与代码注入不同。如果网站有通信媒介并且应用程序有解释它的方法,那么可以合理地假设页面是在考虑应用程序的情况下编写的。不应假设通信请求与代码注入请求相同。当技术阻止这种情况时,它只是意味着基本的通信需要通过一个臃肿的网络服务,当应用程序就在那里时,这很愚蠢。

标签: javascript android kotlin web-applications webview


【解决方案1】:

根据Can I Inject Javascript Code into Chrome Custom Tabs,答案似乎是

Chrome 自定义标签基于 Chrome 本身并具有相同的安全模型。 Web 内容只允许访问 Web API(相机、设备方向等),而不能访问本机应用程序。本机应用最多只能捕获一个 URI。

即使是 Chrome Custom Tab documentation 也表明原生应用处理内容的方式:

某些 URL 可以由本机应用程序处理。如果用户安装了 Twitter 应用程序并点击了一条推文的链接。她希望 Twitter 应用程序能够处理它。

在从您的应用程序中打开一个 url 之前,请检查是否有可用的本地替代方案并使用它。

暗示本机应用程序是否处理 URL。我对 Chrome 自定义选项卡的解释是与本机应用程序相邻的可换肤 Chrome 组件,而不是像存在 Javascript 桥的 WebView 这样的本机应用程序内部。

您对 Web 应用程序中的 Javascript 桥接器的渴望意味着任何网站代码都可以通过任意方式在 Web 容器之外进行交互。在第一个链接中给出了为什么不允许这样做的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2017-02-01
    • 2016-02-03
    • 2017-12-22
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多