2010-10-21 67 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