自己写的一个MFC程序,使用Oauth2.0来登录Google 的服务。 实现方式虽然很多,但我想了想,比较可行的有下面两个 :1. 登录时直接调用ShellExecute()打开登录页面,用户完成登录和确认后,程序检测该页面title的变化,取得相应的 authorization code. 这个实现的难点在于: 如何用MFC程序取得网页的title, 特别是针对不同浏览器 IE, firefox, chrome,以及不同的浏览方式(独立窗口,tab),如何才能保证在所有情况下都能获取到该特定页面的title ? 请做过的大侠指点。2. 登录时,弹出 自己的窗口,嵌入一个IE浏览器,让用户进行登录。由于窗口是自己控制的,比较容易处理。 我大体看了一下,好像要用到COM中的IWebBrowser2接口,但MSDN中说明,在IE7以后已经不好用了, 不知道有没有人用过这种方式。能具体说一下实现要领么?谢谢了,分不够可以再加。
解决方案 »
- 关于CTreeCtrl的左右键单击的问题.
- 如何使用ISensNetwork接口来实现捕获网络断开事件。
- 各位,在xp下如何实现vista或win7的CFileDialog?
- 基于对话框的:如何在对话框或其中的控件上加载HTML文件?
- 关于并口操作的问题?
- Socket服务端只能接受5个连接吗,要实现接受更多的连接怎么办??
- 有没有这样的一个win32API函数?
- 告诉我如何显示图片,百分送
- 尚未注册 OLE DB 访问接口 "ASEOLEDB"
- 基于对话框的应用程序(CDialog),如何在文本框中显示内容?用哪个函数?
- mfc简单资源管理器怎样选中树视图中的D盘而在列表视图中显示D盘下的全部文件
- 如何快速处理Excel文件
MFC的没做过,不是说登录麻烦,而是搞那些API麻烦,所以全用AJAX代替了。
第2个方法:Internet Explorer 7 and later. It is not possible to use CoCreateInstance to open an instance of Internet Explorer as a new tab in an existing window.
MSDN的大意应该是针对在一个Window中采用多IWebBrowser2实例做TAB页这种应用。对于OAuth,你的登陆窗口就一个,使用的IWebBrowser2实例也就一个,不会有这种问题的。
用户的登陆操作,是在官方的HTTPS网页里进行的,客户端是获取不到用户名与密码的。
客户端只是提供了一个网页登陆的入口而已。
1. 使用CHtmlView(或派生类), 试了一下用户体验效果挺好,但由于是个View类,需要mfc的Document-view结构才好用,而我主程序采用的是MFC的document-view框架,登录时希望直接弹出窗口。 这个比较麻烦。2. 使用CDialog派生类,在里面放上一个Web Browser的Active X控件, 这个可以满足弹出窗口的要求,但却存在一个很重要的不足, 窗口的title是dialog固定的title(caption),而我需要读取IE窗口(控件)实际的title,因为title上面显示了auth token. 3. 使用ShowHTMLDialog() (在mshtml.dll中的), 但我在Win7/IE9环境中试了一下,这种方式在cookie处理, url跳转方面都存在问题,无法正常的进行认证和跳转。不知道大家的建议是什么? 谢谢了