【问题标题】:Delphi - Making a Twebbrowser The Default BrowserDelphi - 使 Twebbrowser 成为默认浏览器
【发布时间】:2015-04-04 02:19:53
【问题描述】:

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

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

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

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

任何帮助将不胜感激。

【问题讨论】:

  • 不要那样刮 Dropbox。使用他们自己的 API。顺便说一句,如果你要阻止用户通过他们安装的浏览器访问他们的存储,那么你就是在编写恶意软件。
  • 我的 DLL 通过 REST 服务使用 Dropbox API。用户必须登录并允许访问(除非存储了会话密钥,请参阅 Dropbox)。这是在初始 REST 连接上完成的,同样没有恶意软件。然后用户输入他们的凭据,按下允许访问。我只是想在我的 Twebbrowser 而不是默认浏览器中使用它,因为它更整洁。我不会阻止用户通过他们安装的浏览器访问 Dropbox,你是从哪里得到的以及恶意软件垃圾来自哪里。我正在使用 Dropbox 发布的 API 并根据需要进行身份验证。请阅读帖子,在我看来你没有。
  • 您提出的解决方案是错误的。你应该问问题而不是你错误的解决方案。
  • 请再次阅读您自己的问题以及关于如何提问的 SO 规则。我们回答您提出的问题,而不是您想到的所有其他问题。你问我们如何解决一个应该解决另一个问题的问题。但是你走错路了。退一步询问最初的问题。
  • 不能有“设为默认”这样的简单属性,因为控件不能是默认浏览器,应用程序可以。

标签: delphi internet-explorer indy10


【解决方案1】:

你有两个选择:

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

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

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

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

从不处理用户登录和密码信息。

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


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

【讨论】:

  • 谢谢。修改 Dropbox 客户端显然不是一种选择。至于默认浏览器的使用寿命,这不是问题,我需要成为默认浏览器大约 30 秒。证书验证是否是 Twebbrowser 或其他我不知道的组件组合中的一个选项。我将需要审查并确定如何进行。感谢您的建设性建议。
  • TMS Cloudpack 使用他们的 TMSAdvDropbox 组件完全按照要求完成。
猜你喜欢
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 2014-08-10
  • 1970-01-01
  • 2012-07-19
  • 2012-01-29
相关资源
最近更新 更多