2010-09-07 101 views
5

開發我在Twitter上註冊的Web應用程序。在這個應用程序中,我可能有10個不同的Twitter標識,我想要允許或拒絕應用程序訪問。使用Twitter oAuth授權,您如何指定twitter用戶名?

例如:

https://api.twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXX&oauth_callback=http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback/

它永遠只是默認爲不管我的Twitter帳戶的登錄身份,我必須指定註銷,然後簽入新的賬戶。它幾乎就像我需要一個額外的查詢參數如

https://api.twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXX&oauth_callback=http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback/& ForUsername =比爾·蓋茨

回答

1

注意,在授權的一般範圍,授權代理人不一定知道它代表用戶的身份它的行爲。換句話說,可能會有一個實現,您的應用可以被授權閱讀Twitter的更新流,但仍然不知道該流屬於哪個標識。在這種情況下,添加您要求的參數將是信息泄露,因爲您的應用程序需要系統設計不提供的一條信息。

或者把它放在一個現實生活的例子中 - 設想一個代客泊車,在那裏不是給你一張停車票和拿鑰匙到車上,代客會問你的SSN只是爲了停車,只是因爲代客也爲別人停車。

+0

我想知道如何在登錄授權頁面時登出會話。看起來這在技術上不可行。感謝您的解釋。 – Shane 2010-09-08 11:42:25

+0

一旦你的應用程序被授權,你很可能可以從Twitter API獲取身份。所以,你可以保持授權令牌和身份的關聯。你不能請求特定身份的授權。 – 2010-09-08 16:24:45

+0

這就是我最終做的。我有一張表,我在授權期間存儲請求令牌,然後在回調時,我通過該請求令牌進行匹配。所以我會知道用戶。再次感謝。 – Shane 2010-09-09 12:15:13

3

其實,你可以在一個額外的參數傳遞與回調URL,就像這樣:

https://api.twitter.com/oauth/authorize?oauth_token=XXX&oauth_callback=http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback?ForUsername=billgates 

和參數將被送回給你當Twitter的調用返回的URL,就像這樣:

http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback?ForUsername=billgates&oauth_token=XXX&access_token=YYY 

您可以在文檔中閱讀更多關於這一點 - http://dev.twitter.com/pages/auth

始終使用顯式oauth_callback - 建議您指定客戶端 記錄默認OAuth的回調,但明確聲明對每個請求令牌 您 oauth_callback讀取請求您的應用程序進行。 通過動態地設置您的 oauth_callback,你可以傳回 您的應用程序 額外的狀態信息和最佳控制 經驗。