[英]How to get Box access token from a webpage html or javascript?
嗨,我正在嘗試從網頁上將用戶登錄到Box.com。 我用一個簡單的HTML表單提交完成了第一部分:
<form action="https://www.box.com/api/oauth2/authorize" type="POST" enctype="application/x-www-form-urlencoded">
<input type="text" name="response_type" value="code">
<input type="text" name="client_id" value="[REMOVED]">
<input type="text" name="state" value="vexhax97td8xf_SomeTemporaryValueForTesting">
<input type="submit">
</form>
這可以正常工作,我可以使用javascript從查詢參數中獲取授權代碼。 然后,我嘗試使用相同的方法獲取訪問代碼(auth代碼是由javascript在頁面加載時設置的):
<form action="https://app.box.com/api/oauth2/token" type="POST" enctype="application/x-www-form-urlencoded">
<input type="text" name="grant_type" value="authorization_code">
<input id="auth-code" type="text" name="code" value="">
<input type="text" name="client_id" value="[REMOVED]">
<input type="text" name="client_secret" value="[REMOVED]">
<input type="submit">
</form>
但是我收到“無效的grant_type參數或參數丟失”錯誤。 另外,無論如何,顯示響應json都不是一個好的用戶體驗。 我嘗試了沒有enctype="application/x-www-form-urlencoded"
並得到了相同的錯誤。
Box教程使用curl來做到這一點,而這顯然不是網頁上的選擇。 如何獲取訪問令牌而不會出現“ Invalid ...”錯誤,有沒有辦法通過后台的JavaScript來實現?
對於訪問令牌交換的授權碼,缺少“ redirect_uri”參數。 但這不是真正的問題。
交換應該在服務器端進行,而您是在客戶端(瀏覽器)進行交換。 也許您可以通過AJAX調用進行交換,以正確處理JSON答復,但前提是box.com允許CORS(我對此表示懷疑)。
這樣,您還將在網頁上公開client_id和client_secret(因此,為什么不願意將其發布在stackoverflow上?)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.