如何在不暴露APP_KEY和APP_SECRET的情况下分发使用Dropbox数据存储区API的Python应用程序?

时间:2014-09-29 05:09:55

标签: python dropbox-api

我想创建一个使用Dropbox Datastore API的Python命令行应用程序。我在Dropbox上注册了一个应用程序。我有APP_KEY和APP_SECRET。

如何在不暴露APP_KEY和APP_SECRET的情况下分发此应用程序?

注意:在这种情况下,让用户创建自己的应用程序是无限期的。

没有回答我问题的相关问题:

2 个答案:

答案 0 :(得分:4)

如果你只想要一个独立的python程序,你就不能完全隐藏密钥,你只能对它进行模糊处理(例如用base 64编码)。

如果您想阻止人们访问您的密钥,您必须将密钥放在其他位置(服务器...)并且:或者

1)在程序运行时从程序中检索它(即使这样,某人也可以在你的程序中访问它)

2)使用您的服务器作为代理来调用API(然后密钥是安全的)

答案 1 :(得分:-1)

Dropbox REST API确实提供了一种在不暴露APP_SECRET的情况下完成客户端应用程序授权的方法 - 您只需要在客户端上存储APP_KEY。它通过OAuth 2.0 令牌授权流程执行此操作。

来自Dropbox Core API文档:

  

OAuth 2.0支持两种授权流程:

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

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

  •   

请参阅:https://www.dropbox.com/developers/core/docs#oauth2-methods

不幸的是,Python SDK不支持令牌流方法。它仅支持代码流方法。 (自2014年9月17日更新的2.2.0版本起)

非官方JavaScript库使用此令牌流方法:

https://github.com/dropbox/dropbox-js/

因此要么请Dropbox更新Python SDK来处理这种情况,要么自己破解SDK以添加此功能。