使用javascript与twitter API

我有兴趣使用Adobe Air制作一个Twitter客户端,但我现在有点卡住了,因为我无法找到更好的方法来连接到twitter REST API,因为它需要身份validation。

目前,客户端使用GET变量中的twitter用户名/密码(未加密)向我的服务器(使用curl的php脚本)发送请求。 然后,服务器使用这些凭证向twitter发出请求并输出缓冲区,然后将缓冲区发送回客户端,然后客户端处理/显示它。

这显然是一个可怕的安全漏洞,所以有人知道更好(更安全)的方式吗?

仅供参考:我正在使用jQuery。

那里有一些Base64编码工具。 你可以使用其中一个。 您可以根据基本身份validation规范添加带有编码用户名和密码的标头

这是一篇完全符合您要求的post。 http://www.aswinanand.com/blog/2009/01/http-basic-authentication-using-ajax/ 。 base64使用ostermiller.org中的这个库进行编码

$.ajax({ 'url': 'http://twitter.com/action/', 'otherSettings': 'othervalues', 'beforeSend': function(xhr) { xhr.setRequestHeader("Authorization", "Basic " + encodeBase64(username + ":" + password) }, sucess: function(result) { alert('done'); } }); 

我一直在考虑使用PHP代理服务器做类似的事情(该应用程序需要的请求数量超过允许的白名单数量,因此我需要通过单个IP路由请求)。

我的想法是,您只需发送一次用户名/密码组合,然后为用户分配一个临时会话ID,用于将来的请求。 安全地发送初始用户名/密码有点棘手,您可以用盐加密它,但我不知道AIR应用程序反编译的容易程度。 另一个选择可能是SSL(但我仍然不完全确定它是如何工作的)。

以下是会话ID概念的分步指南:

  1. 用户提供AIR应用程序Twitter凭据。
  2. 凭据已加密并发送到代理服务器。
  3. 在代理处测试身份validation。
    • 如果成功,则会创建会话并返回要使用的ID。
      • 请注意,会话包含到期日期/时间,并且只能由一个IP使用。
    • 如果不成功,则会向客户端返回错误。
  4. 客户端存储会话ID并在将来的请求中使用它来代替用户名/密码。
    • 例如request.php?action=get&data=friends_timeline&sessid=a3ajh83bah35nf
    • 会话到期时间在每次更新时延长。
  5. 当用户退出应用程序时,会向代理发送kill消息,并且会话无效。

你应该看看Spaz。 http://funkatron.com/spaz – 这是一个用javascript for Air编写的开源Twitter客户端。 该来源可在Google Code上找到。 http://code.google.com/p/spaz/

我没有在源头看那么多,但我可以看到一些元素已经用Flash / Flex编写。 我正在使用该应用程序,它只是工作。

希望这对你有用。

Ada是一个用Javascript编写的Adobe Air Twitter客户端。 您可以下载它以了解它的作用:

http://madan.org/ada

Ada的代码在GitHub上:

http://github.com/sfsam/ada/tree/master

Ada使用Base64。 关于Ada的好处是代码库非常小,所以你应该能够把它弄清楚。

Interesting Posts