2010-05-02 281 views
7

我覺得甚至問這個,因爲答案可能已經在我的鼻子令人難以置信的愚蠢,但這裏有雲:Twitter的OAuth授權

TweetMeme有一個重新鳴叫嘰嘰喳喳發佈者可以在他們的博客上放置的小部件。當用戶點擊小部件時,它會彈出一個窗口,允許用戶使用twitter進行身份驗證,然後重新發布消息。

這似乎使用一些特殊的Twitter oauth彈出窗體因子 - 除非表面之下有更奇特的事情發生以驗證用戶身份。

彈出窗口如下所示:

http://twitpic.com/1kepcr

我寧願通過彈出手柄的認證,而不是用戶發送到一個全新的頁面(應用程序I」米工作),他們似乎有最優雅的解決方案。他們如何做到這一點的想法?

回答

0

他們所做的只是在新窗口中打開一個頁面http://api.tweetmeme.com/share?url=someURL&source=tweetmeme(使用目標_blank),然後從那裏開始該過程。

編輯:我在看錯誤的轉推按鈕。對於您的具體示例,首先點擊轉推按鈕,在新窗口中打開Tweetmeme頁面http://tweetmeme.com/ajax/partial?...。點擊是,然後通過將您(仍在該窗口中)發送到https://twitter.com/oauth/authenticate(使用適當的參數)來啓動OAuth進程。

+0

是的,但是最有趣的事情,就是當用戶登錄,並從Twitter頁面heshould被重定向到tweetmeme回調頁。我無法弄清楚發回回調頁面的參數是如何傳遞到主頁面的。 – 2010-05-02 21:58:05

3

我覺得這個過程是這樣的(我認爲他們已經用在服務器端PHP):

首先,它會打開一個jQuery般彈出,但它不是嚴格相關的Twitter登錄功能。 當你確認彈出窗口時,真正的登錄過程開始,所以它打開一個新的彈出窗口,裏面有一些php,持​​有會話。 這些腳本使用站點的應用程序參數來請求推送請求令牌,並將它們保存到$ _SESSION數組中。 如果它是正確的,twitter會將您發送到twitter身份驗證頁面(https://twitter.com/oauth/authenticate),並且在您插入了您的登錄參數後,twitter會將您發送到該站點defiend的回調頁面。這裏有另一個請求訪問令牌的php頁面,並將它們保存到$ _SESSION數組中。如果現在這個網站有他需要查詢你的配置文件的參數,那麼在彈出窗口刷新開啓窗口(主站點)的最後腳本並關閉自己。 現在主窗口在$ _SESSION數組中有所有有趣的參數。

檢查this所有服務器端工作的有用庫。