【问题标题】:Facebook Open Graph without a browser没有浏览器的 Facebook 打开图形
【发布时间】:2010-05-03 19:35:53
【问题描述】:

对于一个带有互联网的中间件系统(在set-top box 中工作)我想开发一个原始的 Facebook 界面,用户可以在其中输入他们的用户名和密码,在电视上显示他们最新的通知、消息和其他随意的东西屏幕使用最近的Facebook Graph API

这个中间件程序使用 Java ME 来运行程序(例如这个简单的 facebook 应用程序),它可以连接到互联网,但它没有真正的网络浏览器。如果没有浏览器,它可以连接到任何 url 来检索 JSON 响应但是我不确定如何在没有真正的浏览器的情况下实现身份验证。

在这种情况下,是否可以进行 Facebook 身份验证?如果你这么认为,你会建议什么方法?

谢谢

【问题讨论】:

    标签: facebook java-me middleware facebook-graph-api


    【解决方案1】:

    Facebook 为受信任的合作伙伴提供私有授权 API,以从用户名/密码中获取 OAuth 2 令牌。

    更复杂的方法是执行类似于 Netflix 注册设备的方式:

    1. 设备调用服务器获取代码
    2. 设备在屏幕上显示代码并引导用户转到服务器上的 URL 并输入代码
    3. 服务器将用户重定向到 Facebook 并获得 OAuth 令牌,用户被告知返回设备
    4. 设备使用Code调用服务器并获取OAuth令牌
    5. 设备现在可以直接代表用户拨打电话

    【讨论】:

    • 我也建议这样做:让您的设备的每个实例都有某种序列号;让用户登录您的网站,并将该登录名与他们拥有的设备的序列号相关联,然后让设备联系您自己的网站并为其提供必要的身份验证信息以访问 Facebook API
    • 我在编写智能电视的 facebook 客户端时使用了这种方式。
    【解决方案2】:

    根据有关“Desktop Application Authentication”的文档,我不相信您想要的结果是可能的:

    Facebook 的 OAuth 实施不包括明确的桌面应用程序支持。但是,如果您的桌面应用程序可以嵌入 Web 浏览器,那么您可以使用 JavaScript 客户端使用的相同 OAuth 用户代理流程轻松地将 Facebook 支持添加到您的应用程序中。

    但是,某些供应商显然可以这样做,因为 Microsoft 的 Xbox 360 Facebook 应用程序完全符合您的建议。我很想看看是否有人在他们最明显的文档中挖掘了 Facebook 不希望这样做的任何 API。

    【讨论】:

    • 微软在 Facebook 拥有一定比例的股份。另一个主控制台(据称)也有一个专用的 sdk - 但我还没有看到它。
    • @Chris,我怀疑 Facebook 的潜在收益与微软的1.6% stake相比更多地与它有关
    【解决方案3】:

    这不是答案,但我正在尝试做同样的事情。查看这个人的博客,它使用另一台服务器来代理请求: cory wiles blog

    如果你想通了,请在此处发布详细答案,以便我可以这样做...... :)

    【讨论】:

      【解决方案4】:

      我认为这是可能的,尽管它非常复杂并且会受到 Facebook 界面突然变化的影响。这可能会破坏您与 Facebook 之间的协议。

      你所做的就是模仿 Facebook。

      您必须设置一个 Facebook 应用程序的路径。一旦你得到用户的授权,你就可以使用 Graph API 来做一些事情。

      您需要Facebook登录流程和授权流程。有一些关于 http/https 请求和响应的捕获工具。分析它们,包括标题和正文。

      一旦你知道了授权机制,你就可以用你自己的来替换它。之后的一切都在 Graph API 上。

      另一种方法是模拟 Facebook 登录以及消息和通知过程。需要捕获和分析。

      【讨论】:

        【解决方案5】:

        过去我使用过一个名为screen-scraper 的工具(完全披露:我曾经在那里工作过)来自动登录到 facebook。基本上,它模仿浏览器会话;它允许您设置会话变量(即用户名、密码),然后将其提交给 facebook,就像用户在浏览器中提交它们一样。

        您可能无法在您的机顶盒环境中使用 screen-scraper(尽管它是基于 java 的,所以它可能会起作用)。即使没有,您也可以在 java 中实现类似的策略,使浏览器发出 HTTP 调用来加载登录页面并提交用户的凭据。为了保证用户信息的安全,请确保您使用的任何 HTTP 客户端库都支持 HTTPS。

        CharlesFiddler2、Firebug、Chrome 的开发工具等代理工具和扩展程序有助于准确查看浏览器在请求中向服务器发送的内容。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-02
          • 1970-01-01
          • 1970-01-01
          • 2017-02-13
          • 1970-01-01
          • 2013-12-04
          • 1970-01-01
          相关资源
          最近更新 更多