2013-05-13 63 views
1

我正在研究通過OAuth授權的雲存儲API。第三方應用程序的用戶可以允許所述應用程序通過我們的RESTful API訪問他們的文件/數據。如何爲單個用戶帳戶多次處理相同的第三方應用程序授權?

目前,我們限制第三方應用訪問用戶帳戶一次。例如,Access Token表在消費者列和用戶列上有一個UNIQUE。這乍一看是有道理的,因爲用戶決不應該被髮送到我們的服務來授權第三方應用程序兩次,因爲第三方已經知道他們的用戶已經被綁定到我們的服務並且不需要重新-authorized。

但是,如果此用戶在第三方應用上有兩個帳戶,並且他們希望所述應用連接到我們的服務上的單個帳戶兩次?這看起來很可能,因爲在Reddit等服務上存在多個帳戶。

以下是可能的解決方案我已經出來,到目前爲止,沒有人是完美的:

  • 顯示第二身份驗證請求期間的錯誤:這似乎是對用戶的困擾, ,一個「警察出局」的種類。
  • 刪除以前的令牌:這可能會惹惱用戶,因爲他們以前的帳戶停止工作。即使我們顯示警告,也很難解釋究竟發生了什麼。
  • 返回與第一個請求相同的訪問令牌:每次請求訪問時,都會傳遞一組權限。第二個請求的權限可能與第一個請求的權限不同。此外,不確定這是否會違反OAuth規範,因爲第二次生成的請求令牌沒有正確綁定到訪問令牌。
  • 允許生成兩個:這會引起混淆,因爲當用戶訪問他們的屏幕時,充滿授權應用程序以撤消其授權,他們不知道哪個授權與哪個第三方帳戶綁定。當生成請求令牌以識別不同的驗證碼時(我們當前要求提供非OAuth標準的permission參數),我們可以要求提供可選的第三方username參數。但是,這看起來似乎不會被99%的開發人員使用,並可能使應用程序開發更加混亂。

處理這種情況的最佳方法是什麼?有沒有一個標準化的做法來處理這個用例?

回答

0

我認爲你最後的情況下是正確的方式去 - 允許兩到生成

當用戶訪問他的畫面充滿授權的應用程序,它沒有必要向他展示同一個應用程序兩次 - 如果用戶撤銷應用程序訪問權限,則只需刪除與該應用程序關聯的令牌。也就是說,他對所有令牌的應用授權都會隨着撤銷而消失,這很好。

相關問題