我在验证过程中遇到问题。 我正在使用Android上的Dropbox开发应用程序,当我第一次使用该应用程序时,一切正常。 我可以将应用程序与我的Dropbox帐户相关联。我在共享首选项中保存密钥。一切都很好。
然而,我不得不再次同意我的意见,我想将我的帐户与我的申请联系起来(即使我已经这样做了)。我必须完成整个身份验证过程,并且我有Dropbox Web视图......
这种奇怪的行为一直在发生,当我对我的代码进行更改并将其重新加载到手机上时,我总是必须完成整个身份验证过程。 我不明白为什么“session.authenticationSuccessful()”在没有明显原因的情况下返回false而所有其他时间都返回true。
感谢您的帮助
答案 0 :(得分:0)
你在保存令牌吗?您应该在onResume()方法中包含以下行:
// save server session
if (session.authenticationSuccessful()) {
try {
// Mandatory call to complete the auth
session.finishAuthentication();
if (!mIsLogged) setLogged(mDBApi.getSession().isLinked());
// Store it locally in our app for later use
String tokens = session.getOAuth2AccessToken();
SharedPreferences prefs = getSharedPreferences("DROPBOX_PREFS", 0);
Editor editor = prefs.edit();
editor.putString(APP_KEY, tokens);
editor.commit();
} catch (IllegalStateException e) {
Log.i("SERVICE", "Error authenticating", e);
} catch (Exception e) {
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
Log.i("Exception", errors.toString());
}
这样,在第一次进行身份验证后,会话令牌会被保存,以便您下次在代码中的某个位置执行此操作:
AppKeyPair appKeyPair = new AppKeyPair(APP_KEY, APP_SECRET);
AndroidAuthSession session;
SharedPreferences prefs = getSharedPreferences("DROPBOX_PREFS", 0);
String token = prefs.getString(APP_KEY, null);
if (token != null) {
session = new AndroidAuthSession(appKeyPair, token);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
setLogged(mDBApi.getSession().isLinked());
} else {
session = new AndroidAuthSession(appKeyPair);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
}