2010-10-21 66 views
3

我一直在编写一个Delphi EXE(win32桌面应用程序)以访问twitter并执行某些功能。它曾经用api限制来使用基本认证。我知道我必须将其转换为OAuth。我一直在阅读试图确定最佳方法的文档。我知道最好的方法是带有回拨URL的Web浏览器。我也知道Twitter包含一个基于PIN的(oob)身份验证方法。我认为这是与这个应用程序一起使用的路线,但我想确保它不是无缝的。它要求用户去应用程序的外部并获取一个PIN码。它也不是安全的,因为返回的访问令牌永不过期。Twitter OAUTH和Win32 EXE桌面应用程序

我使用Indy v10组件来执行GET/POST操作,所以我想知道是否有办法使用它们来执行此操作,并且可以执行回调并且不使用PIN身份验证方法。

任何人都可以帮助我吗?

此外,我一直试图让德克萨斯州的查克·比斯利的Twitter类与Indy v10工作,我一直有麻烦。 IdObjs和Idsys不再存在。有没有人有这个类来处理我的场景? 感谢, 大卫

回答

4

OAuth是一种用于Web应用程序的标准,其文本中充斥着“代理”这个词,意思是一个浏览器。最好的解决方案恕我直言,如果可能的话,实际上有一个回调URL,这意味着你有自己的网站提供服务来支持你的应用程序功能。有些服务已经为第三方提供了这种服务,例如JanRain。如果这些选项不可行(意味着您无法为回调URL提供真正的WWW站点)不可行,那么您的唯一选择的确是带外验证,oob。甚至不要考虑让OAuth身份验证回调在某个端口上监听的应用程序,这是完全不可靠的,因为1)绝大多数应用程序将位于某种NAT设备(路由器,出站代理)之后,这使得它们无法访问OAuth prvider和2)OS防火墙将阻止您的来电。

+4

您无需运行自己的网站即可使用OAuth的回叫网址。所有这一切都会告诉OAuth在身份验证完成时将代理/浏览器重定向到哪个URL。 TIdHTTP有一个OnRedirect事件可用于捕获重定向。或者,只需将HandleRedirects属性设置为False并手动处理重定向URL即可。在Chuck的原始代码中,他使用TEmbeddedWB组件来处理认证的UI部分(输入凭据和授予权限),然后拦截回调重定向,以便其余代码可以使用提供的认证令牌。 – 2010-10-22 00:12:09

+0

@雷米:我认为你是对的。我想在OpenID方面,信赖方领域发现需要一个网站。但OAuth的工作方式不同,基于应用程序的秘密/公钥对,并且不需要Twitter来“调用”您的领域。 – 2010-10-22 00:41:02

+1

Indy的问题跟踪器中已经有一个打开的功能票证,用于向未来的版本添加原生OAuth支持。 – 2010-10-22 20:29:36

1

在平均时间,Beasly的Twitter类已经扩大/更新;请参阅the latest incarnation

我已经开始使用Synapse访问Twitter的库。它可以使用OOB/PIN身份验证和预定义的oauth令牌/秘密。它可以扩展到使用基于浏览器的身份验证。目前使用FPC编写,但应该很容易适应德尔福。 FPCTwit code