CefSharp 使用浏览器登录加载页面
Posted
技术标签:
【中文标题】CefSharp 使用浏览器登录加载页面【英文标题】:CefSharp load a page with browser login 【发布时间】:2015-06-19 05:01:10 【问题描述】:我需要在 Wpf 应用程序中嵌入网络浏览器,我尝试使用工具箱中的浏览器,但遇到一些问题并转到 CefSharp。
public MainWindow()
InitializeComponent();
BrowserSettings settings = new BrowserSettings();
Cef.Initialize(new CefSettings());
CefSharp.Wpf.ChromiumWebBrowser webBrowser = new CefSharp.Wpf.ChromiumWebBrowser();
licence_grid.Children.Add(webBrowser);
webBrowser.Address = "http://myurlToLoad the page";
问题是当我使用正常的 url 页面加载时。 但是当我使用我打算使用的 url 时,用户在弹出的浏览器中输入他的用户名和密码(我的意思不是从网站弹出)。我收到此页面的错误,需要很长时间才能加载,仅此而已。 谁能给我一些跟踪... 谢谢
【问题讨论】:
您看到了什么错误?还有一些示例项目可以帮助您入门,请参阅 github.com/cefsharp/CefSharp.MinimalExample 尝试使用示例加载您的网页,看看您是否收到类似的错误。如果您将CefSharp
的版本作为一般做法,这也很有帮助。
【参考方案1】:
听起来您所指的弹出窗口实际上是提示basic
身份验证的站点。
在这种情况下,您需要提供一个IRequestHandler.GetAuthCredentials
处理程序。
【讨论】:
是的,我没有找到正确的词......所以你的意思是我需要实现一个处理程序并自己完成提示窗口,获取用户和密码并将 vthese 值放入字符串在处理程序中通过 ref 传递... 是的,基本上为用户提供您自己的对话框来捕获用户名和密码,然后设置两个 ref 参数并返回 true; github.com/cefsharp/CefSharp/blob/master/CefSharp/… 好的,非常感谢,我来自 MS ActiveX,所以我需要发现,我发现文档不太好.. 你实现了 GetAuthCredentials 并成功了吗 事实上我改变了主意并转向 Electron 来开发我的应用程序【参考方案2】:由于问题和答案非常古老,我想提供有关此解决方案的最新更新,因此根据建议的原始解决方案略有更改。
任何使用 cefsharp 的人都需要实现身份验证对话框。方法的变化是
bool IRequestHandler.GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy,
string host, int port, string realm, string scheme, IAuthCallback callback)
//NOTE: If you do not wish to implement this method returning false is the default behaviour
// We also suggest you explicitly Dispose of the callback as it wraps an unmanaged resource.
// shyam - original implemenation.
//callback.Dispose();
//return false;
bool handled = false;
// Instantiate the dialog box
AuthDialog dlg = new AuthDialog(host); // create new dialog with username and password field.
// Open the dialog box modally
dlg.ShowDialog();
if (dlg.DialogResult == System.Windows.Forms.DialogResult.OK)
// The user did not cancel out of the dialog. Retrieve the username and password.
callback.Continue(dlg.UserName,dlg.Password);
handled = true;
return handled;
【讨论】:
AuthDialog 类来自哪里? Visual Studio 找不到。以上是关于CefSharp 使用浏览器登录加载页面的主要内容,如果未能解决你的问题,请参考以下文章