Lal*_*res 0 authentication server-side token meteor dropbox-sdk-js
一段时间以来,我一直在 Meteor 应用程序中使用dropbopx-sdk-js ,没有遇到任何问题。
我的 Meteor 应用程序仅使用 Dropbox 来获取要在产品卡中使用的图像。这些文件时不时会同步,仅此而已。我所说的同步是指扫描它们、创建或获取共享链接,然后将一些信息保存在 Mongo 中(名称、扩展名、路径、公共链接)
最终用户不会删除或添加文件,这些文件也不与最终用户特定帐户相关。
为了实现这一目标,我(在很久以前)在 Dropbox 应用控制台中创建了一个应用程序,生成了一个永久令牌,并在我的 Meteor 应用程序中使用该令牌来处理所有同步。
现在,我尝试在新的类似项目中复制同样的事情,但发现永久令牌最近已被弃用,不再是一种选择。
现在,检查 Dropbox 的身份验证类型,在我看来就像“应用程序身份验证”
“这种类型仅使用应用程序自己的应用程序密钥和秘密,并且不识别特定的用户或团队”。
这就是我所追求的。我可以安全地在服务器中专门提供应用程序密钥和秘密,因为客户端永远不需要这些。问题是我如何实现这种身份验证?或者就此而言,我如何为我的应用程序实现相当于长期令牌的功能,最终意味着最终用户实际上不需要以任何方式知道 Dropbox 在幕后(而且他们肯定不需要 Dropbox)帐户使用此应用程序也不应收到任何 Dropbox 身份验证页面的提示)
在 js-sdk 示例存储库中,我只找到了使用应用程序密钥和秘密的示例。但之后它无论如何都会在浏览器中经历 oauth 过程。如果我不执行 oauth 部分,则会收到错误
"error": {
"name": "DropboxResponseError",
"status": 409,
"headers": {},
"error": {
"error_summary": "path/unsupported_content_type/...",
"error": {
".tag": "path",
"path": {
".tag": "unsupported_content_type"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
作为调用的结果
dbx.filesListFolders({ path: '', recursive: true }):
Run Code Online (Sandbox Code Playgroud)
如果我用生成的令牌替换 dbx 对象的初始化,一切都会正常。然而,令牌最终会过期,我又回到了第一个方向。
有什么想法我可能会错过什么吗?
简短的回答是:
您需要获取刷新令牌。然后,您可以根据需要使用该令牌。但为了获得它,需要在浏览器中至少经过一个 oauth 流程。然后在后端捕获生成的刷新令牌。然后存储它并使用它来初始化API。所以这有点“hacky”(IMO)。
例如,您可以使用提到的示例代码,并在此行中记录/存储获得的刷新令牌(根据 Greg 在论坛中接受的答案)。然后使用该值作为常量,setRefreshToken在初始化时立即调用该方法(如同一行中所做的那样)。
长答案是:
更长的答案是:
查看我们在 Dropbox 论坛中的对话
我建议将控制台中的“生成访问令牌”按钮替换为“生成刷新令牌”按钮。至少根据我们的讨论,这对我来说是有意义的。也许如果它得到一些喜欢......;)。
| 归档时间: |
|
| 查看次数: |
2270 次 |
| 最近记录: |