如何将桌面应用程序与网站相关联

时间:2012-03-30 16:55:21

标签: windows facebook authentication webservice-client

我需要将桌面应用程序与网站上的特定用户帐户相关联。到目前为止,工作流程如下:

当前流程

  • 桌面应用程序会询问用户的电子邮件,密码和一些额外信息(计算机名称)。
  • 使用带有用户凭据的REST调用网站,获取新创建的令牌并存储它。该令牌用于验证桌面应用程序。

新流程

现在,我想允许用户使用Facebook和其他第三方网站注册并登录我们的网站。显然,Facebook登录过程不会发生在我的桌面应用程序中,所以我正在寻找一种方法在浏览器中拥有所有关联过程,并将生成的令牌从浏览器传输到桌面应用程序中作为最后一步。 / p>

我更喜欢使用用户的默认浏览器,而不是WebBrowser控件,因为WebBrowser控件使用IE,如果它不是用户的默认浏览器,则所有cookie(以及Facebook登录等)都将丢失。

问题

自动将24个字符的字母数字标记从Web浏览器中打开的页面传递到桌面应用程序的最佳方法是什么。手动剪切和粘贴不会......如果还有其他方法可以实现我想要做的事情,我也很乐意听到它。

平台

桌面平台是Windows(目前),但我们也在考虑为MacOSX创建客户端。 Web平台是Ruby on Rails 3.2 + jQuery。

2 个答案:

答案 0 :(得分:1)

出于明显的安全原因,浏览器没有这种功能。

由于浏览器无法直接将文件保存到用户的磁盘,因此您的网络应用必须生成一个文件,其中包含任何OAuth令牌(Facebook,Twitter,无论如何)和您想要的数据到文件扩展名为“12345”的文件中。 haimg“并让您的桌面应用程序将该文件类型与操作系统相关联,因此当用户打开文件时,它会将该数据传递给桌面应用程序。但是,当Web应用程序可以触发自动下载时,用户需要自己手动打开文件以“注册”到您的桌面应用程序,并且由于您只能将一个文件扩展名与一个应用程序相关联,因此您需要设置多个文件扩展名和文件关联。听起来比它的价值更麻烦。

您可以随时向Web应用中的用户公开某种哈希标记,您可以在桌面应用中对其进行解码。用户仍然需要手动剪切和粘贴,但如果它是一次性的,它应该没有太大的影响,并且看起来比下载大量文件等更安全..开销会少很多您的IT员工不必设置上述所有文件关联。

答案 1 :(得分:0)

您的桌面应用程序可以嵌入Jetty,并使用CORS(跨源资源共享)允许浏览器访问localhost。另一种解决方案是使用"自定义URL协议"。您也可以使用Node.js