無分類雜文 21 Oct 2009 04:53 pm

推到 Twitter!
推到 Plurk!


不遵守 OAuth 標準的 Yahoo / Wretch API



這是前幾天開發 I’m Expert 時的心得感想。

I’m Expert 原本的重頭戲,其實是打算透過 OAuth 的方式,將文章同步到無名小站去。但現在看到的同步到 Wordpress / PIXNET (皆使用 XMLRPC)這個功能。完全是因為時限之內作不出來,才想到的變通之道。

(我是比賽結束當晚才試出來的)

如果是個人實力因素,那完全認栽沒話說。但在經過好幾晚的徹夜研究加上到現場找無名 RD 直接討論之後,才發現作不出來根本不是我的問題。

(雖然很感謝現場幫助我的無名 RD,但我還是要幹角一下 -_-)

寫 Yahoo OAuth 以及 Wretch OAuth 幾個的困難點在於

1. Yahoo OAuth 不 follow OAuth standard.
2. Wretch 更不 follow Yahoo spec ( 要正確能動,php 開發者甚至要改掉 yahoo sdk 的 Yahoo.inc 檔裡面的 post function,沒有人知道這個 hack,官網上也沒有)
3. Wretch 某些 API 一直到比賽當天,根本都還是爛的。(10/1 公開發表,10/17 還是爛的)
4. 只要錯誤,一律噴 404,完全無法 debug。
5. 沒人看得懂 WretchAPI 的 document 要表達什麼…

而要解決這些問題:

1. 如果你是使用 Rails,oauth-plugin 已經拿掉了 YahooToken的設計。執意想要開發這個功能的開發者,必須自己 rollback 回來,然後基於 implement SocialAPI 的 形式自己寫出 WretchAPI。拿掉的理由, plugin 開發者寫在這裡,Yahoo OAuth 搞得他相當怒。

值得注意的是,Wretch post 吃 XML,而 YahooToken.rb 是用 json….,所以需要自己重寫 xml(get/post)的部份。我是用 xml-simple 作。

2. Wretch 沒有像 Social 一樣給出 guid 的 api 讓程式可以問,所以拿 guid 請自己想辦法 :/ 弔詭的是,wretch 的 API 都需要給 guid 才能拿/送資料。

3. php 開發者必須自行修改 yosdk.zip 裡的 Yahoo.inc 檔,把 post function 改成這一段

這段程式轉成其他語言版本的意義是

以開新相簿為例:

其實是要對 http://wretch.yahooapis.com/v1/albumService/ZKWHF6P5LXDZSICROTM76OS4CI/albums?class_id=1 丟 以下內容的 post

========

大致上技術上的 issue 都在這裡…。不過如果你真的想 implement 成商業產品,最讓開發者困擾的並不是這些,而是 Y! OAuth token 極容易 expire,大約 30 min 之內就會 expire。只要 token expire 掉就必須請使用者 reconnect ….

這才真正是令人抓狂的地方。比 BBAuth 還要更煩人 -_-

使用前請三思..

Creative Commons License

15 Responses to “不遵守 OAuth 標準的 Yahoo / Wretch API”


  1. on 21 Oct 2009 at 5:16 pm 1.Tweets that mention Blog.XDite.net » 不遵守 OAuth 標準的 Yahoo / Wretch API -- Topsy.com said …

    [...] This post was mentioned on Twitter by Kirin Lin and xdite, KIKA. KIKA said: Reading: "Blog.XDite.net » 不遵守 OAuth 標準的 Yahoo / Wretch API" ( http://bit.ly/3rXKw2 ) ★這算是被無名用無名的方式反巴一掌嗎…… [...]

  2. on 21 Oct 2009 at 5:59 pm 2.roga said …

    看起來真的很糟糕..

  3. on 21 Oct 2009 at 7:39 pm 3.gdx said …

    我們後來發現取GUID的方法在這…
    developer.yahoo.com/social/rest_api_guide/web-services-guids.html

    很難找 +_+

  4. on 22 Oct 2009 at 1:29 am 4.BB said …

    之前使用Yahoo Social API的 PHP Lib來通過OAuth,之後就可以直接存取Wretch的資料了….但是我根本搞不懂OAuth是啥阿…T_T

    不過目前還是只使用Facebook Connect而已,Wretch感覺商業模式要談會比較麻煩~ 不知道會不會像facebook這樣大方?

  5. on 23 Oct 2009 at 8:34 am 5.小海 said …

    感覺有點像是幫無名 debug XD

  6. on 23 Oct 2009 at 7:08 pm 6.Polprav said …

    Hello from Russia!
    Can I quote a post in your blog with the link to you?

  7. on 25 Oct 2009 at 12:54 am 7.xdite said …

    sure

  8. on 06 Nov 2009 at 2:56 pm 8.双色球 said …

    大致上技術上的 issue 都在這裡…。

  9. on 06 Nov 2009 at 2:58 pm 9.股票iiq said …

    我是用 xml-simple 作。

  10. on 09 Nov 2009 at 2:32 am 10.door.urs.tw said …

    wretch 收錄於部觀門(Digest by door.urs.tw)…

    這篇文章有很多有關 wretch 的資訊, 因此收錄於部觀門精選文章 (This article got many useful information about wretch, so we digest in BlogDoor system)…

  11. on 09 Nov 2009 at 12:39 pm 11.速遞問答 said …

    真的不太理想。

  12. on 10 Nov 2009 at 1:59 pm 12.拆組達人 said …

    這還真糟啊!醬子沒人願意協助開發了!惡性循環啊!

  13. on 02 Dec 2009 at 2:57 am 13.door.urs.tw said …

    yahoo 收錄於部觀門(Digest by door.urs.tw)…

    這篇文章有很多有關 yahoo 的資訊, 因此收錄於部觀門精選文章 (This article got many useful information about yahoo, so we digest in BlogDoor system)…

  14. on 08 Dec 2009 at 11:42 pm 14.Benson said …

    其實Yahoo在稿自有規格
    也不是一天兩天的事了

  15. on 12 Dec 2009 at 4:59 pm 15.harebell said …

    你好:
    我想請問你是否有測試出post文章到blog的api,
    我依照他的文件設定必填的參數,但還是一直噴404
    參數的屬性值在文件上沒有寫清楚,
    因此想請教你,謝謝!

Trackback This Post | Subscribe to the comments through RSS Feed

Leave a Reply