Delphi - 使 Twebbrowser 成为默认浏览器
Delphi - Making a Twebbrowser The Default Browser
我想做的事情看起来很简单,但我找不到任何参考。我只想将我的 Twebbrowser(或任何嵌入式浏览器或合适的组件 - 为了争论我只是使用 Twebbrowser 作为我需要的任何组件的指示器 - 未知的未知数)默认。场景是,当我尝试访问 Dropbox 时,它弹出一个带有 userID/Password 的网页,然后弹出一个带有 allow 的网页按钮。
我只是希望这些网页出现在我的 Twebbrowser 中,而不是显示用户默认浏览器的实例(即 chrome 在我的例子中)。当我处理完这两个页面后,我只想将默认浏览器设置回原来的状态。看起来很简单,但我不知道如何实现这一点。回顾一下:
- 我尝试通过 DLL 调用访问保管箱
- 如果我的凭据是从上一个会话中保存的,系统就会继续进行
- 如果我的凭据未保存,Dropbox 会弹出一个登录网页(我希望在我的 Twebbrowser NOT 中使用用户默认浏览器)
- 我登录后 dropbox 弹出一个 'allow access' 页面(我希望在我的 twebbrowser NOT 用户默认浏览器中再次显示)
- 当我登录并允许访问保管箱时,我想重新启用用户的默认浏览器
关键是我没有向 Twebbrowser 组件提供 URL,系统生成的 activity 完全超出了我的控制范围,并且基于是否满足特定条件(我无从知晓)这些是否已经满足,例如可能有会话 ID 和密钥,但这些可能已经过期)。我在网上搜索过,找不到任何可能的东西。我不是专家,但我认为 属性 之类的 ...Make this default... 会很有用。这可能真的很简单,但我无法弄清楚。
如有任何帮助,我们将不胜感激。
你有两个选择:
- 将您的应用设为默认浏览器
- 修改 Dropbox 客户端,使其使用您的应用程序而不是默认浏览器
第一个的生命周期很短,因为浏览器可以检查它们是否仍然是默认浏览器。如果用户启动他们的常规浏览器,它会弹出一条消息说他们不再是默认浏览器,并请求用户允许更改此设置。然后您的应用程序将不再是默认应用程序。
第二个显然是一个非常糟糕的主意,因为这样做,您的应用程序将不得不修改 Dropbox 客户端应用程序。
请注意,相关 Dropbox documentation 中的第一句话说:
Never handle user login and password information.
核心 API 最佳实践,第一部分:用户授权
补充:请注意,Dropbox authentication使用默认浏览器是有原因的:浏览器不仅显示登录表单,还允许用户查看 TLS(传输层安全性,也称为 SSL ) 证书。 TWebbbrowser 是否允许直接访问此信息,以便用户可以确定您的应用程序不会捕获和滥用输入的凭据?
我想做的事情看起来很简单,但我找不到任何参考。我只想将我的 Twebbrowser(或任何嵌入式浏览器或合适的组件 - 为了争论我只是使用 Twebbrowser 作为我需要的任何组件的指示器 - 未知的未知数)默认。场景是,当我尝试访问 Dropbox 时,它弹出一个带有 userID/Password 的网页,然后弹出一个带有 allow 的网页按钮。
我只是希望这些网页出现在我的 Twebbrowser 中,而不是显示用户默认浏览器的实例(即 chrome 在我的例子中)。当我处理完这两个页面后,我只想将默认浏览器设置回原来的状态。看起来很简单,但我不知道如何实现这一点。回顾一下:
- 我尝试通过 DLL 调用访问保管箱
- 如果我的凭据是从上一个会话中保存的,系统就会继续进行
- 如果我的凭据未保存,Dropbox 会弹出一个登录网页(我希望在我的 Twebbrowser NOT 中使用用户默认浏览器)
- 我登录后 dropbox 弹出一个 'allow access' 页面(我希望在我的 twebbrowser NOT 用户默认浏览器中再次显示)
- 当我登录并允许访问保管箱时,我想重新启用用户的默认浏览器
关键是我没有向 Twebbrowser 组件提供 URL,系统生成的 activity 完全超出了我的控制范围,并且基于是否满足特定条件(我无从知晓)这些是否已经满足,例如可能有会话 ID 和密钥,但这些可能已经过期)。我在网上搜索过,找不到任何可能的东西。我不是专家,但我认为 属性 之类的 ...Make this default... 会很有用。这可能真的很简单,但我无法弄清楚。
如有任何帮助,我们将不胜感激。
你有两个选择:
- 将您的应用设为默认浏览器
- 修改 Dropbox 客户端,使其使用您的应用程序而不是默认浏览器
第一个的生命周期很短,因为浏览器可以检查它们是否仍然是默认浏览器。如果用户启动他们的常规浏览器,它会弹出一条消息说他们不再是默认浏览器,并请求用户允许更改此设置。然后您的应用程序将不再是默认应用程序。
第二个显然是一个非常糟糕的主意,因为这样做,您的应用程序将不得不修改 Dropbox 客户端应用程序。
请注意,相关 Dropbox documentation 中的第一句话说:
Never handle user login and password information.
核心 API 最佳实践,第一部分:用户授权
补充:请注意,Dropbox authentication使用默认浏览器是有原因的:浏览器不仅显示登录表单,还允许用户查看 TLS(传输层安全性,也称为 SSL ) 证书。 TWebbbrowser 是否允许直接访问此信息,以便用户可以确定您的应用程序不会捕获和滥用输入的凭据?