一段時間以來,我一直在 Meteor 應用程式中使用dropbopx-sdk-js,沒有遇到任何問題。
我的 Meteor 應用程式只是使用 Dropbox 來獲取要在產品卡片中使用的影像。這些檔案不時同步,僅此而已。通過同步,我的意思是掃描它們,創建或獲取共享鏈接,然后將一些資訊保存在 Mongo 中(名稱、擴展名、路徑、公共鏈接)
最終用戶不會洗掉或添加檔案,檔案也不會與最終用戶特定帳戶相關。
為了實作這一點,我(過去)在 Dropbox App Console 中創建了一個應用程式,生成了一個永久令牌,并在我的 Meteor 應用程式中使用該令牌來處理所有同步。
現在我試圖在一個新的類似專案中復制同樣的東西,但發現永久令牌最近已被棄用,不再是一種選擇。
現在,檢查 Dropbox 的身份驗證型別在我看來就像“應用程式身份驗證”
“這種型別只使用應用程式自己的應用程式密鑰和秘密,不識別特定用戶或團隊”。
是我所追求的。我可以安全地在服務器中專門提供應用程式密鑰和秘密,因為客戶端永遠不需要這些。問題是我如何實作這種身份驗證?或者就此而言,我如何為我的應用程式實作等效的長期令牌,最終意味著最終用戶實際上不需要知道 Dropbox 以任何方式在幕后(他們肯定不需要 Dropbox帳戶使用此應用程式,也不應提示任何 Dropbox 身份驗證頁面)
在 js-sdk 示例 repo 中,我只找到了使用 app key 和 secret 的示例。然而,無論如何,它都會在瀏覽器中完成 oauth 程序。如果我不做 oauth 部分,我會得到一個錯誤
"error": {
"name": "DropboxResponseError",
"status": 409,
"headers": {},
"error": {
"error_summary": "path/unsupported_content_type/...",
"error": {
".tag": "path",
"path": {
".tag": "unsupported_content_type"
}
}
}
}
由于呼叫
dbx.filesListFolders({ path: '', recursive: true }):
如果我用生成的令牌替換 dbx 物件的初始化,一切都會成功。然而,最終令牌到期,我又回到了第一方。
任何想法我可能會錯過什么?
uj5u.com熱心網友回復:
簡短的回答是:
您需要獲取重繪 令牌。然后,您可以根據需要使用此令牌。但是為了獲得它,必須在瀏覽器中至少經過一個 oauth 流程。然后在后端捕獲生成的重繪 令牌。然后存盤它并使用它來初始化 API。所以這有點“hacky”(IMO)。
例如,您可以使用提到的示例代碼,并在此行中記錄/存盤獲得的重繪 令牌(根據 Greg 在論壇中接受的答案)。然后將該值用作常量,以便setRefreshToken在初始化時立即呼叫該方法(如在同一行中所做的那樣)。
長答案是:
- ClientId Client secret 不足以以編程方式生成重繪 令牌。
- 必須至少執行一次 oauth 流程才能獲得重繪 令牌
- 如果您想對您的客戶隱藏這樣的流程,您需要按照簡短的回答所說的去做。
- 根據 Dropbox 的預期使用流程是:每個用戶訪問自己的檔案。官方不支持讓多個用戶訪問單個檔案夾。
更長的答案是:
查看我們在 Dropbox 論壇中的對話
我建議將控制臺中的“生成訪問令牌”按鈕替換為“生成重繪 令牌”按鈕。至少根據我們討論的內容,這對我來說是有意義的。也許如果它得到一些喜歡......;)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/440688.html
標籤:验证 流星 令牌 服务器端 Dropbox-sdk-js
