我想创建一个使用Dropbox Datastore API的Python命令行应用程序。我在Dropbox上注册了一个应用程序。我有APP_KEY和APP_SECRET。
如何在不暴露APP_KEY和APP_SECRET的情况下分发此应用程序?
注意:在这种情况下,让用户创建自己的应用程序是无限期的。
没有回答我问题的相关问题:
答案 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以添加此功能。