【问题标题】:How to associate a desktop application with a web site如何将桌面应用程序与网站相关联
【发布时间】:2012-03-30 16:55:20
【问题描述】:

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

当前进程

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

新进程

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

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

问题

自动将 24 个字符的字母数字令牌从在 Web 浏览器中打开的页面传递到桌面应用程序的最佳方法是什么。手动剪切和粘贴不行...如果有任何其他方法可以明智地实现我想要做的事情,我也很想听听。

平台

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

【问题讨论】:

    标签: windows facebook authentication webservice-client


    【解决方案1】:

    出于明显的安全原因,浏览器不具备此类功能。

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

    您始终可以在 Web 应用程序中向用户公开某种哈希令牌,您可以在桌面应用程序中对其进行解码。用户仍然需要手动剪切和粘贴,但如果是一次性的,它应该不会产生太大影响,并且对他们来说似乎比下载大量文件等更安全。开销会少得多您的 IT 员工无需设置上述所有文件关联。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-10
        • 2017-03-05
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 2018-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多