小编Lal*_*res的帖子

既然它们已经消失了,如何实现相当于 Dropbox 的长期令牌(dropbox-sdk-js、Meteor、React)

一段时间以来,我一直在 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 对象的初始化,一切都会正常。然而,令牌最终会过期,我又回到了第一个方向。

有什么想法我可能会错过什么吗?

authentication server-side token meteor dropbox-sdk-js

0
推荐指数
1
解决办法
2270
查看次数