Delphi - 使 Twebbrowser 成为默认浏览器

Delphi - Making a Twebbrowser The Default Browser

我想做的事情看起来很简单,但我找不到任何参考。我只想将我的 Twebbrowser(或任何嵌入式浏览器或合适的组件 - 为了争论我只是使用 Twebbrowser 作为我需要的任何组件的指示器 - 未知的未知数)默认。场景是,当我尝试访问 Dropbox 时,它弹出一个带有 userID/Password 的网页,然后弹出一个带有 allow 的网页按钮。

我只是希望这些网页出现在我的 Twebbrowser 中,而不是显示用户默认浏览器的实例(即 chrome 在我的例子中)。当我处理完这两个页面后,我只想将默认浏览器设置回原来的状态。看起来很简单,但我不知道如何实现这一点。回顾一下:

  1. 我尝试通过 DLL 调用访问保管箱
  2. 如果我的凭据是从上一个会话中保存的,系统就会继续进行
  3. 如果我的凭据未保存,Dropbox 会弹出一个登录网页(我希望在我的 Twebbrowser NOT 中使用用户默认浏览器)
  4. 我登录后 dropbox 弹出一个 'allow access' 页面(我希望在我的 twebbrowser NOT 用户默认浏览器中再次显示)
  5. 当我登录并允许访问保管箱时,我想重新启用用户的默认浏览器

关键是我没有向 Twebbrowser 组件提供 URL,系统生成的 activity 完全超出了我的控制范围,并且基于是否满足特定条件(我无从知晓)这些是否已经满足,例如可能有会话 ID 和密钥,但这些可能已经过期)。我在网上搜索过,找不到任何可能的东西。我不是专家,但我认为 属性 之类的 ...Make this default... 会很有用。这可能真的很简单,但我无法弄清楚。

如有任何帮助,我们将不胜感激。

你有两个选择:

  • 将您的应用设为默认浏览器
  • 修改 Dropbox 客户端,使其使用您的应用程序而不是默认浏览器

第一个的生命周期很短,因为浏览器可以检查它们是否仍然是默认浏览器。如果用户启动他们的常规浏览器,它会弹出一条消息说他们不再是默认浏览器,并请求用户允许更改此设置。然后您的应用程序将不再是默认应用程序。

第二个显然是一个非常糟糕的主意,因为这样做,您的应用程序将不得不修改 Dropbox 客户端应用程序。

请注意,相关 Dropbox documentation 中的第一句话说:

Never handle user login and password information.

核心 API 最佳实践,第一部分:用户授权


补充:请注意,Dropbox authentication使用默认浏览器是有原因的:浏览器不仅显示登录表单,还允许用户查看 TLS(传输层安全性,也称为 SSL ) 证书。 TWebbbrowser 是否允许直接访问此信息,以便用户可以确定您的应用程序不会捕获和滥用输入的凭据?