首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IWebBrowser2脸书登录

IWebBrowser2脸书登录
EN

Stack Overflow用户
提问于 2014-03-11 04:22:10
回答 1查看 303关注 0票数 0

我正在用C++开发一个基于windows的应用程序,需要facebook登录。我使用带有CLSID_WebBrowser组件(IWebBrowser2)的Ole嵌入/ActiveX控件来进行身份验证。

到目前为止,我创建了一个窗口,嵌入了facebook web浏览器控件,然后我用一个“授权url”将它定向到activeX登录,就可以很好地工作。

https://graph.facebook.com/oauth/authorize?client_id=xxxx&redirect_uri=https://www.facebook.com/connect/login_success.html&scope=basic_info

xxx设置为我们的应用程序id。

这样就行了,你可以登录了。问题是,如果我退出并重新启动应用程序,即使我在网页中选择了“让我保持登录”,我通常也必须重新输入我的密码。

我之所以说一般,是因为如果我不使用上面的facebook auth url,在我的active x控件中输入go to www.facebook.com并登录,它会记住我已经登录了,如果我关闭并重新启动应用程序,我就不需要输入密码了。

作为另一个侧面的细节,所有这些都与运行IE的行为是分开的。如果我运行IE并登录-它对应用程序内部的登录没有任何影响。这并不是我的ActiveX控件嵌入实现所独有的。如果我运行JUCE库演示-它有一个web浏览器active X组件,它的行为与我的相同。那是..。

1)我可以通过https://graph.facebook.com/oauth/authorize登录-但如果我重新启动演示,它将不会记住我以前的登录2)如果我通过www.facebook.com登录,它会记住我已经登录了+实际上在JUCE中这样的登录将允许我在没有密码的情况下从我的应用程序登录3)从IE登录没有任何效果

每次都要登录是很乏味的,而且如果你选择了“保持登录”,这似乎是不正确的行为。当我使用www.facebook.com登录时,保存会话状态的ActiveX控件似乎没有问题。值得一提的是,我不能使用www.facebook.com登录,因为它不会返回应用程序运行所需的信息,这就是authorize样式url的全部内容。

这似乎意味着facebook在这些场景中做了一些不同的事情-如果你使用授权url,它不会存储登录信息。

所以我的问题是如何解决这个问题--这样“保持登录”将保持登录状态,以便通过授权url进行应用程序身份验证?

我猜作为一种解决办法,你可以将授权令牌存储在应用程序中,然后尝试查看该令牌在启动时是否有效。我不确定这是不是“正确”的做法。还要注意-我最初的实现使用的是Ole自动化(有效地,我的应用程序控制了一个单独的IE进程),它没有这些问题。但不幸的是,在IE 11中,Ole自动化似乎已经被打破了。

感谢您的宝贵时间和智慧。

EN

回答 1

Stack Overflow用户

发布于 2014-04-01 23:58:51

我没有在facebook中找到“让我保持登录”的荣誉。相反,如果用户登录,我会将加密的授权令牌存储在一个文件中。如果他们重新启动应用程序,它将尝试使用存储的auth令牌登录。如果失败,将获取标准登录序列。这相当于总是设置“keep me point”,这是不正确的,但从可用性的角度来看比相反的更好。

有可能从网页的DOM中查找“keep me logged”元素,并查看其设置为什么。这看起来有点脆弱。

我仍然对如何“正确地做这件事”的建议持开放态度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22310501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档