java - 使用之前生成的 token 在 Android 应用程序中进行 Dropbox 身份验证

标签 java android oauth dropbox dropbox-api

我正在开发一个 Android 应用程序,真的只是为了我自己,学习 Android 并为自己做一些有用的东西。该应用程序是我编写的桌面应用程序的扩展。桌面应用程序所做的事情之一是将一些文本数据和图像上传到我为此目的创建的 Dropbox 帐户。

Android 应用程序提供了桌面应用程序的简化实现,以便我可以随时随地获得一些相同的功能。因此,当 Android 应用程序启动时,它会检查 Dropbox 帐户并下载尚未拥有的任何新数据。

对于桌面应用程序(Python),我只是通过使用我的 dropbox 应用程序 key (在浏览器中)点击 dropbox 身份验证端点来手动进行身份验证,然后使用从中获得的“代码”最终获得访问 token 。因此,我将该 token 硬编码到我的桌面应用程序中,它绕过了 oAuth 流程,仅使用该 token 进行身份验证。上传数据就好了。

虽然 Python Dropbox API 允许我做到这一点,但我不确定如何使用 android dropbox API 做到这一点。我一直在浏览 JavaDocs 中的类 API ,但似乎我必须通过 oAuth 过程来获取 AccessTokenPair 进行身份验证(它似乎由 key 和 secret 组成)。我是否可以只向某个对象(可能是 DropboxAPI 实例)提供在桌面应用程序中使用的相同 token 来进行身份验证?

我现在意识到 Dropbox 的这种用法可能不是很直观,但我现在已经投入了,所以如果可以的话,我希望让它发挥作用。

编辑:
如果您从之前的身份验证 session 中保存了 AccessTokenPair(或其值),那么您似乎可以避免执行 oAuth 过程。看起来 AccessTokenPair 只是两个字符串的包装: key 和 secret 。所以我想我现在的问题是,这两个值是什么?我有一个访问 token ,它是一个约 64 个字符的字符串,我的桌面应用程序已成功使用它进行身份验证。我可以使用它来创建 AccessTokenPair 对象吗?如果可以的话,它是 key 还是 secret 以及我缺少什么?

解决方案:
正如 Smarx 所说,问题在于 AndroidiOS Dropbox 客户端使用 oAuth1,而 PythonRubyPHPJava 客户端使用 oAuth2。因此,我实际上最终只是遵循 Android 的 oAuth1 流程,记录生成的访问 key 和 secret ,然后对它们进行硬编码以供将来使用以绕过 oAuth 流程。看起来运行良好。

最佳答案

您使用的是 Core API 还是 Sync API?

就 Sync API 而言,我认为没有简单的方法来使用您已有的 token 。

对于 Core API,我认为您可以做到,但我相信 Android Core SDK 仍然使用 OAuth 1,并且我的猜测是您有一个 OAuth 2 token 。

关于java - 使用之前生成的 token 在 Android 应用程序中进行 Dropbox 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20914383/

相关文章:

java - 如何将数据存储在特殊的 id 上并从该 id 获取该数据?

java - 降低 Java 程序中的 CPU 利用率

android - 如何在android 2.3-actionbarsherlock 上更改选项卡的样式

authentication - 无需登录的 Vimeo API AuthorizationUrl

ruby-on-rails - 如何在基本字符串签名 OAuth1 中包含查询参数

Javascript 访问 OAuth 2 的 Location header 的 URL 片段

java - Beanshell java.lang.NoClassDefFoundError

java - ScrollView 内的 android 图像和按钮

Android 库 - 使用 Gradle 将多个变体发布到本地 Maven 存储库

android - 手电筒在条形码扫描器程序 (Zxing) 中不起作用