如何从桌面应用程序使用Dropbox API进行身份验证?

时间:2016-01-24 10:33:43

标签: oauth oauth-2.0 dropbox-api

我正在尝试开发一个将在用户计算机上本地运行的应用程序。我想使用Dropbox API来存储和同步一些特定于应用程序的文件。

在整个Dropbox文档中,假设应用程序是一个Web应用程序。看起来认证的唯一选择是通过OAuth。如果应用程序在我自己的服务器上运行,那么存储应用程序的 secret 代码(这是OAuth所需的代码,如the example中所示)并不是问题。但就我而言,如果我在用户的计算机上运行一个实现OAuth的Web服务器,我将不得不发布 secret

似乎还有另一种选择 - 仅为身份验证部分运行全局服务器,然后重定向回到在localhost上运行的服务器。但我真的不喜欢这个。

所以,我的问题是:
有没有更好的方法从用户的计算机上使用Dropbox API进行身份验证? 或者是否可以发布应用程序的秘密

2 个答案:

答案 0 :(得分:2)

发布一个应用程序密钥肯定是不可取的,所以在OAuth 2中,包括Dropbox的实现,有一种机制可以在不使用app秘密的情况下在客户端应用程序中处理OAuth流。

具体来说,客户端应用程序应使用“令牌”流程(而不是“代码”流程),如文档here under /oauth2/authorize所述:

  

OAuth 2.0支持两种授权流程:

     
      
  • 代码流通过redirect_uri回调返回一个代码,然后使用/ oauth2 / token调用将其转换为承载令牌。这是在服务器上运行的应用程序的推荐流程。

  •   
  • 令牌或隐式授权流程通过redirect_uri回调返回持票人令牌,而不是要求您的应用程序再次拨打服务器。这对于纯客户端应用非常有用,例如移动应用或基于JavaScript的应用。

  •   

不幸的是,对于客户端Python应用程序的情况,Dropbox Python SDK中的OAuth流目前仅考虑服务器端应用程序,因此只实现代码流,而不是令牌流。它是开源的,所以你可以根据需要修改它,或者单独实现令牌流。

答案 1 :(得分:-1)

作为一种更简单的解决方案,您可以发布已编码的secret并在服务器端对其进行解码。

这只是出于安全原因