使用具有核心 API 的保管箱,但避免登录页面

Use of dropbox with core APIs, but avoiding login page

我想将 Dropbox 用于我的文件共享应用程序,使用核心 Dropbox API。我正在使用 OAuth 2.0 API 进行身份验证(隐式授权方法)。 问题是,为了获得访问令牌,我需要登录到 Dropbox 帐户,否则它会将我重定向到 Dropbox 登录页面。我不希望我的用户输入登录凭据。

有什么办法可以避免登录过程,直接获取访问令牌?? 或者我可以在后端使用一些登录名 api 进行登录,而无需用户迭代吗??

这里我考虑的是一个 Dropbox 帐户,所有必要的凭证都在我这里。

谢谢。

因为您想使用您的 Dropbox 帐户来存储文件,所以没有理由打扰other/your 用户登录:只需获得一个access_token 以常规方式为您的客户(需要 登录 Dropbox)将其存储在您的应用程序中,并在您对 Dropbox API 的调用中使用该 access_token。根据 Dropbox Access Token Expiry,Dropbox 的访问令牌永不过期,因此这就是您所需要的。

您可能已经在核心 api 文档中看到,Dropbox 不提供此功能。

不过,您可以通过模拟用户与网站的交互来自动执行该过程。这可以通过请求模块来完成。我为我的项目开发了一个解决方案:

https://github.com/joe42/CloudFusion/blob/master/cloudfusion/store/dropbox/dropbox_store.py#L214

也许使用 PhantomJS 之类的解决方案可以更轻松地完成此操作,尽管当时我还不知道。

在这里提出我自己的问题的可能解决方案: 这里的主要问题是关于在某些时间间隔重新生成访问令牌,这也没有任何用户交互,后端的东西。 通过 Dropbox APIs 后,我得出结论,没有 API 公开用于自动重新生成访问令牌。 但是Google Drive do offer Service Account,不需要用户交互。

是的,你可以做到这一点。

执行以下操作:

转到https://www.dropbox.com/developers 点击 "App Console" 点击 "Create App" Select "Dropbox API app" Select "Files and Datastores" 为数据类型。 根据您自己的访问偏好回答其余问题

这是您需要的部分。设置应用程序后,在应用程序控制台中,单击该应用程序。在该应用程序的主页上,在 OAUTH2 部分,有一个显示 "Generate Access Token".

的按钮

单击此按钮,它将生成一个 non-expiring 访问令牌,您可以 copy/paste 并在您的应用程序中使用它来授予您访问权限,而无需进行 Oauth2 身份验证。

下面是使用访问令牌和 curl 列出文件夹中的文件(并获取其他元数据)的示例。

curl https://api.dropbox.com/1/metadata/dropbox/YourFolder -H "Authorization:Bearer XYZ123"

其中 XYZ123 是您从应用程序的应用程序控制台生成的访问令牌。

只要在请求的 header 中包含 Authorization: Bearer,就可以在 Core API 中使用所有 API 调用,而无需提供应用程序 ID , secret, 或进行 oauth2 认证舞会。