在Dropbox网站的Getting started文章中,他们有一个教程如何使用Android API和Android入门 .
当应用程序首次启动时,系统会要求用户对软件进行身份验证以使用用户Dropbox帐户 . 验证成功完成后,您将收到一对验证字符串,密钥和密码 .
在用户验证应用程序以使用他或她的Dropbox帐户后,我使用Android的SharedPreferences保存密钥和secred .
如何使用这些保存的值?我不是指如何使用SharedPreferences检索它们,而是如何使用它们来防止再次重新验证应用程序的需要?在Dropbox网站上,他们没有提供使用这些的方法 . 他们所说的都是
finishAuthentication()方法将用户的访问令牌绑定到会话 . 您现在可以通过mDBApi.getSession() . getAccessTokenPair()来检索它们 . 您的应用关闭后,您将再次需要这些令牌,因此保存它们以供将来访问非常重要(尽管此处未显示) . 如果不这样做,则用户每次使用您的应用时都必须重新进行身份验证 . 实现存储密钥的常用方法是通过Android的SharedPreferences API .
3 回答
我有同样的问题,文档不是很好所以我看到了几个相关的问题 . 解决此问题的关键是
AndroidAuthSession
类中的方法isLinked()
. 我分享我的代码所以它可以解决你的疑虑 .我会一步一步解释 .
startOAuth2Authentication' or
setOAuth2AccessToken`以防你已经拥有它(从最后一个会话中保存) . 你可以在onCreate(如果是活动)或onActivityCreated(如果它是片段)中执行此操作 .session.authenticationSuccessful()
. 只有在您执行身份验证过程时,才会返回true . 如果它不为空,则登录失败或您的帐户已经链接 . 就是这样,LINKED . 你怎么检查?正如我之前所说,这是解决这个问题的关键 . 你需要检查的是会话是否已经链接调用session.isLinked()
和voilà . 它会告诉您是否已成功链接到dropbox api,或者如果它是错误的,则该过程中存在问题 .我希望这能解决你的疑问,如果你有任何疑问,请不要犹豫 .
Dropbox android JavaDoc似乎扩展了你需要做的更多一点,展示了另一个AndroidAuthSession构造函数:
我想你只需要实例化一个DropboxAPI对象,你就可以不使用startAuthentication()... endAuthentication()等 .
我没有试过这个,但这与格雷格所说的基本相同 .
SDK附带的示例显示了使用现有访问令牌创建会话的不同方法 . 例如,使用方法setAccessTokenPair:
或者使用构造函数:
(这些简单示例只是从状态文件加载访问令牌 . )