Facebook Open Graph无需浏览器

9
针对一个带有互联网功能的中间件系统(在机顶盒内运行),我想开发一个原始的Facebook界面,用户可以输入用户名和密码,通过最近的Facebook Graph API在电视屏幕上显示他们的最新通知、信息和其他随意内容。

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

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

谢谢

5个回答

3

Facebook向可信赖的合作伙伴提供私有授权API,以获取用户名/密码的OAuth 2令牌。

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

  1. 设备调用服务器以获取代码
  2. 设备在屏幕上显示代码,并指示用户转到服务器上的URL并输入代码
  3. 服务器将用户重定向到Facebook并获取OAuth令牌,要求用户返回设备
  4. 设备使用代码调用服务器以获取OAuth令牌
  5. 设备现在可以代表用户直接进行调用

这也是我推荐的做法: 让每个设备实例都有某种序列号;让用户登录您的网站,并将该登录与他们拥有的设备的序列号关联起来,然后让设备联系您自己的网站并提供必要的身份验证信息以访问Facebook API。 - Igy
我在编写智能电视的Facebook客户端时使用了这种方法。 - siniradam

0
根据 "桌面应用程序身份验证" 的文档,我不认为您想要的结果是可能的:
Facebook的OAuth实现不包括显式的桌面应用程序支持。但是,如果您的桌面应用程序可以嵌入Web浏览器,您可以使用与JavaScript客户端相同的OAuth用户代理流轻松地将Facebook支持添加到您的应用程序中。
然而,某些供应商显然可以做到这一点,因为微软的Xbox 360 Facebook应用程序正是您所提出的内容。我很想看看是否有人挖掘出了任何API来做到这一点,而Facebook并不希望在他们最明显的文档中出现。

微软持有Facebook的股份。另一款主要游戏机据称也有专用的sdk,但我没有看到过。 - Chris Masterton
@Chris,我怀疑Facebook的潜在收益与微软1.6%的股份有更大的关系。 - Nicole

0

我认为虽然这很复杂,而且Facebook界面会突然改变,但这是可能的。这可能会违反您和Facebook之间的协议。

您需要模拟Facebook。

其中一种方法是设置一个Facebook应用程序。一旦获得用户授权,您可以使用Graph API进行操作。

您需要了解Facebook的登录过程和授权过程。有一些捕获工具可用于http/https请求和响应。分析它们,包括头部和正文。

一旦您了解了授权机制,就可以将其替换为自己的机制。之后的一切都在Graph API上进行。

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


0

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

如果你弄清楚了,请在这里发布详细的答案,这样我也可以做到... :)


0

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

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

代理工具和扩展程序,如CharlesFiddler2、Firebug、Chrome的开发工具等,在查看浏览器向服务器发送的请求方面非常有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接