允许Dropbox API访问用户设备上的帐户

时间:2013-02-21 23:10:07

标签: android dropbox dropbox-api

作为移动开发人员,我正在寻找一种解决方案,允许我的应用程序用户下载多个.zip文件,这些文件会为我的应用程序添加“模块化”感觉。我在另一个应用中使用了Dropbox API,允许用户将项目备份到他们的帐户,但现在我需要用户访问我的帐户。

有没有办法自动将Dropbox会话验证到我的帐户,或只是连接到我的公共文件夹而用户甚至没有注意到?

后续问题

将我的访问密钥和应用密钥/密钥硬编码到应用程序中有什么安全隐患?我知道从.apk获取源代码非常简单,但有人可以用这些信息做什么?

3 个答案:

答案 0 :(得分:7)

这不是API的预期目的,但您可以手动为应用程序授权访问令牌一次,然后在应用程序的所有实例中以编程方式嵌入和重用该访问令牌。 (尽管如此,您需要注意不要意外撤销该访问令牌。)此方法可能存在安全性和速率限制问题,具体取决于具体情况。

或者,使用链接的另一种方法可能会更容易。只需make the link(s) desired(如果需要,还有convert to direct),然后download from it。 (另外,Dropbox当然不是CDN,所以请注意bandwidth limits。)

跟进答案

如果您在应用中嵌入了应用令牌和访问令牌,攻击者可能会提取这些令牌,然后通过API读取/写入/删除访问权限,以及应用有权访问的Dropbox(无论您的应用程序本身通常会尝试执行哪些限制,都可以使用app文件夹或完整的Dropbox,具体取决于您的API应用程序)。因此,您不希望使用此方法存储任何私人信息,例如,任何私人用户特定文件。

答案 1 :(得分:1)

过了一段时间,但是 现在,dropbox将允许您生成公共访问令牌并在代码中使用它

是的,有一种方法可以永久访问Dropbox API。我们需要从应用程序设置(Dropbox控制台)生成访问令牌并使用它。这是Dropbox所说的:

  

通过生成访问令牌,您将能够进行API调用   您自己的帐户,无需通过授权流程。至   获取其他用户的访问令牌,使用标准OAuth流程。

代码词:

AndroidAuthSession session = buildSession();
mApi = new DropboxAPI<AndroidAuthSession>(session);

    private AndroidAuthSession buildSession() {
        AppKeyPair appKeyPair = new AppKeyPair(APP_KEY, APP_SECRET);
        AndroidAuthSession session = new AndroidAuthSession(appKeyPair, ACCESS_TOKEN);
        // I guess then you just have to instantiate a DropboxAPI object and you're good to go without the startAuthentication()... endAuthentication() etc.
        return session;
    }

在这里我们只需使用mApi做任何你想做的事情

答案 2 :(得分:0)

  

将我的访问密钥和应用密钥/密钥硬编码到应用程序中有什么安全隐患?

有足够动力的人最终会获得您的访问密钥。

  

我知道从.apk获取源代码非常简单,但有人可以用这些信息做什么?

他们可以对这些信息采取任何措施。