這非常奇怪(也許不安全的行爲),所以請耐心等待,因爲我試圖解釋這一點。我已經調試了幾個小時,無法弄清楚爲什麼Github API會以這種方式處理我的RESTful API請求。GitHub API問題 - 創建公鑰
我使用Github oAuth API驗證我的應用程序。當用戶成功驗證他們的github賬戶時,我根據請求的範圍獲得用戶的access_token ...沒問題,標準oAuth行爲(https://developer.github.com/v3/oauth/#web-application-flow)。
然後,以後每API調用,我附上訪問令牌的HTTP Authorization頭,像這樣:
Authorization: 'token abcdefghijklmnopqrstuvwxyz123456789abcde'
的行動我想用的access_token執行是增加公共密鑰對用戶的帳戶,一切似乎只是罰款:https://developer.github.com/v3/users/keys/#create-a-public-key
現在,2個用戶帳戶這樣做時,怪事發生了。如果我有2個用戶,比方說,Alice和Bob。
Alice用github登錄應用程序,獲得access_token'aaa',我的應用程序可以使用授權標題中的'aaa'access_token成功將公鑰添加到她的帳戶。
我註銷應用愛麗絲和鮑勃使用的GitHub的憑據登錄爲鮑勃。 auth成功,Github爲Bob提供了access_token'bbb'。但是,當試圖將公鑰添加到Bob的帳戶時,即使Bob在其賬戶中沒有任何公鑰,也會得到一個「密鑰已被使用」的錯誤。
但是,通過使用鮑勃的access_token「BBB」,用於其他API請求,比如上市私有倉庫和組織,Github上返回鮑勃的數據。似乎在他的賬戶中創建公鑰時,Github仍然將Bob的access_token'bbb'與Alice的公鑰關聯起來。
更奇怪的是我驗證了這一點,因爲一旦我從Alice的賬戶中刪除了公鑰,我就能夠成功登錄Bob並將公鑰添加到Bob的賬戶,而不是Alice的公鑰。
我在該國的兩個獨立的地理區域測試在同一瀏覽器這種行爲,在兩個不同的瀏覽器在同一臺計算機上,並在兩個不同的計算機具有相同的結果。
我假設,通過Github上提供的將的access_token就是行動要對執行用戶帳戶正確關聯。特別是對於POST和DELETE請求,其中用戶名未在URL中顯示,就像大多數GET請求一樣。
我敢肯定,我失去了一些東西,但如果有人能提供一些見解它會不勝感激,謝謝!