这个中间件程序使用Java ME来运行程序(例如这个简单的Facebook应用程序),它可以连接到互联网,但没有真正的Web浏览器。没有浏览器,它可以连接到任何URL以检索JSON响应,但我不确定如何在没有真正浏览器的情况下进行身份验证。
在这种情况下,是否可能进行Facebook身份验证?如果您认为可以,您会建议采取什么方法?
谢谢
这个中间件程序使用Java ME来运行程序(例如这个简单的Facebook应用程序),它可以连接到互联网,但没有真正的Web浏览器。没有浏览器,它可以连接到任何URL以检索JSON响应,但我不确定如何在没有真正浏览器的情况下进行身份验证。
在这种情况下,是否可能进行Facebook身份验证?如果您认为可以,您会建议采取什么方法?
谢谢
Facebook向可信赖的合作伙伴提供私有授权API,以获取用户名/密码的OAuth 2令牌。
更复杂的方法是执行类似于Netflix设备注册的操作:
我认为虽然这很复杂,而且Facebook界面会突然改变,但这是可能的。这可能会违反您和Facebook之间的协议。
您需要模拟Facebook。
其中一种方法是设置一个Facebook应用程序。一旦获得用户授权,您可以使用Graph API进行操作。
您需要了解Facebook的登录过程和授权过程。有一些捕获工具可用于http/https请求和响应。分析它们,包括头部和正文。
一旦您了解了授权机制,就可以将其替换为自己的机制。之后的一切都在Graph API上进行。
另一种方法是模拟Facebook的登录、消息和通知过程。需要进行捕获和分析。
这不是一个答案,但我也在尝试做同样的事情。看看这个家伙的博客,他使用另一个服务器来代理请求: cory wiles blog
如果你弄清楚了,请在这里发布详细的答案,这样我也可以做到... :)
过去我曾使用一个叫做screen-scraper(完全透明:我曾在那里工作)的工具来自动登录Facebook。基本上,它模拟了一个浏览器会话;它允许您设置会话变量(即用户名、密码),然后将它们提交到Facebook,就像用户在浏览器中提交它们一样。
您可能无法在机顶盒环境中使用screen-scraper(尽管它是基于Java的,所以有可能会起作用)。即使它不起作用,您也可以在Java中实现类似的策略,使HTTP调用成为浏览器加载登录页面并提交用户凭据的方式。为了保护用户信息的安全,请确保您使用的任何HTTP客户端库都支持HTTPS。
代理工具和扩展程序,如Charles、Fiddler2、Firebug、Chrome的开发工具等,在查看浏览器向服务器发送的请求方面非常有帮助。