我正在製作一個應用程序,用KA的API對教練進行身份驗證,以呈現每個學生進度的統計數據和報告。如何訪問我所有學生的數據?
我怎麼看「我是誰教練」(/api/v1/user.coaches
的反面)?
或以其他方式請求所有學生的用戶和進度數據?
我正在製作一個應用程序,用KA的API對教練進行身份驗證,以呈現每個學生進度的統計數據和報告。如何訪問我所有學生的數據?
我怎麼看「我是誰教練」(/api/v1/user.coaches
的反面)?
或以其他方式請求所有學生的用戶和進度數據?
您可以要求/api/v1/user/students
獲得當前認證用戶的學生列表。請注意,這是一個未記錄的端點,不確定是否有意或無意,但我懷疑只是一個疏忽,因爲IIRC我已經看到它們在過去的github問題上引用它。
我添加了端點在這個PR的khan
NPM模塊:https://github.com/weo-edu/khan/pull/4
一個重要的警告說明的是,本文寫作時,你將不能夠要求代表誰擁有用戶的學生驗證您的應用程序,只有創建您當前使用的應用程序的用戶。換句話說:如果我以「Jeffrey」身份登錄時創建名爲「hello」的應用程序,則可以通過使用「hello」應用程序進行身份驗證來獲取Jeffrey的所有學生。但是,如果我通過「hello」應用程序(通過oauth,例如passport-khan)以Lisa身份登錄,我將擁有訪問令牌,但由於Lisa未創建「hello」應用程序,因此Khan API將拒絕我的請求。
這種行爲被記錄在案(雖然有點令人混淆)在this wiki page,這裏的相關段落:
建議學校有註冊API密鑰一位老師/教練帳戶。這使得登錄用戶與第三方開發人員相同的情況下,第三方開發人員可以根據可汗學院的「教練」關係訪問他們自己的學生數據。例如,假設Riverdale High的負責人希望通過API爲多個學生輸出數據。校長將創建一個教師/教練帳戶,也許稱爲「RiverdaleHighAPI」,並註冊一個API密鑰。校長然後會要求Riverdale High的所有學生直接或通過幾個班級代碼加入「RiverdaleHighAPI」作爲教練。當以「RiverdaleHighAPI」作爲登錄用戶訪問API時,校長將能夠訪問已添加「RiverdaleHighAPI」作爲教練的所有學生的數據。即使另一位教練通過該應用登錄,該應用也無法訪問任何其他教練的學生數據。爲保護學生隱私,我們不允許通過教練間接獲得同意,我們要求每個學生明確授予訪問其數據的權限。請注意,我們正在努力改進此功能;目前,這個「RiverdaleHighAPI」帳戶只能由學校的API客戶端使用,而不是由任何實際的教師或教練使用。
最後,可汗實際上鼓勵公衆使用他們的內部API。他們建議在登錄到khan並查找返回所需數據的端點時打開開發者控制檯。 (見this note on their authentication document)。 這顯然是一個相當不規範的做法,我認爲這些端點會在沒有警告的情況下發生突變。你也將免費飛行文件。也就是說,這種方法可能是您的目的最可靠的選擇。這裏是他們的維基後代的報價:
API瀏覽器記錄我們的公共API,它的URL以/ api/v1開頭,但不幸的是它沒有很好的維護,並且在少數幾個方面缺乏。
如果您覺得冒險,但歡迎您使用任何內部未公開的API端點。例如,如果您加載可汗學院視頻頁面,並使用瀏覽器的開發人員工具查看發送的ajax請求,則會看到它獲得/ api/internal/videos/aubZU0iWtgI/transcript等URL,其中包含JSON響應與視頻字幕。名稱中的「內部」意味着我們不提供文檔,並且我們可能會在未來刪除端點或更改格式,但如果牢記這些注意事項,則歡迎使用任何內部端點。
我覺得很令人不安的是,即使沒有正確記錄,API也沒有實現。更重要的是,文檔已過時 - 對API的更改應該是新版本!如果你想鼓勵公衆使用API,它應該被正確記錄和穩定。 –