From 5582097ca10050a04e1c3e9d314136615f13f5c8 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Tue, 14 Sep 2021 15:01:45 +0200 Subject: [PATCH] get access token to update through connection validator update token --- .../android/lib/common/ConnectionValidator.kt | 11 ++++------- .../android/lib/common/OwnCloudClient.java | 14 ++++++++++---- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/ConnectionValidator.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/ConnectionValidator.kt index 4a932058..492a0096 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/ConnectionValidator.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/ConnectionValidator.kt @@ -4,7 +4,6 @@ import android.accounts.AccountManager import android.accounts.AccountsException import android.content.Context import com.owncloud.android.lib.common.authentication.OwnCloudCredentials -import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory.OwnCloudAnonymousCredentials import com.owncloud.android.lib.common.http.HttpConstants import com.owncloud.android.lib.common.operations.RemoteOperationResult @@ -63,7 +62,8 @@ class ConnectionValidator ( } } if (successCounter >= failCounter) { - //update credentials in client + baseClient.credentials = client.credentials + baseClient.cookiesForBaseUri = client.cookiesForBaseUri return true } validationRetryCount++ @@ -89,11 +89,6 @@ class ConnectionValidator ( return remoteStatusOperation.execute(client) } - private fun triggerAuthRefresh(): OwnCloudCredentials { - Timber.d("!!!!!!!!!!!!!!!!!!!!!!!!!!!! need to reauthenticate !!!!!!!!!!!!!!!!!!!!!!!!!!") - return OwnCloudCredentialsFactory.getAnonymousCredentials() - } - private fun canAccessRootFolder(client: OwnCloudClient): RemoteOperationResult { val checkPathExistenceRemoteOperation = CheckPathExistenceRemoteOperation("/", true) return checkPathExistenceRemoteOperation.execute(client) @@ -154,8 +149,10 @@ class ConnectionValidator ( val credentials = account.credentials if (shouldInvalidateAccountCredentials(credentials, account, status)) { invalidateAccountCredentials(account, credentials) + if (credentials.authTokenCanBeRefreshed()) { try { + // This command does the actual refresh account.loadCredentials(context) // if mAccount.getCredentials().length() == 0 --> refresh failed client.credentials = account.credentials diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java index a1bb2526..04f268e7 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java @@ -59,6 +59,7 @@ public class OwnCloudClient extends HttpClient { public static final String STATUS_PATH = "/status.php"; private static final String WEBDAV_UPLOADS_PATH_4_0 = "/remote.php/dav/uploads/"; private static final int MAX_REDIRECTIONS_COUNT = 5; + private static final int MAX_RETRY_COUNT = 2; private static int sIntanceCounter = 0; private OwnCloudCredentials mCredentials = null; @@ -112,12 +113,12 @@ public class OwnCloudClient extends HttpClient { } private int saveExecuteHttpMethod(HttpBaseMethod method) throws Exception { - boolean repeatWithFreshCredentials; int repeatCounter = 0; int status; - boolean retry = false; + boolean retry; do { + repeatCounter++; retry = false; String requestId = RandomUtils.generateRandomUUID(); @@ -126,7 +127,7 @@ public class OwnCloudClient extends HttpClient { method.setRequestHeader(HttpConstants.OC_X_REQUEST_ID, requestId); method.setRequestHeader(HttpConstants.USER_AGENT_HEADER, SingleSessionManager.getUserAgent()); method.setRequestHeader(HttpConstants.ACCEPT_ENCODING_HEADER, HttpConstants.ACCEPT_ENCODING_IDENTITY); - if (mCredentials.getHeaderAuth() != null && method.getRequestHeader(AUTHORIZATION_HEADER) == null) { + if (mCredentials.getHeaderAuth() != null && !mCredentials.getHeaderAuth().isEmpty()) { method.setRequestHeader(AUTHORIZATION_HEADER, mCredentials.getHeaderAuth()); } @@ -149,7 +150,7 @@ public class OwnCloudClient extends HttpClient { } */ - } while (retry); + } while (retry && repeatCounter < MAX_RETRY_COUNT); return status; } @@ -166,6 +167,11 @@ public class OwnCloudClient extends HttpClient { "\nUrl: " + method.getHttpUrl() + "\nCookeis: " + getCookiesForBaseUri().toString() + "\nCredentials type: " + mCredentials.getClass().toString() + + "\ntoken: " + mCredentials.getAuthToken() + + + "\nHeaders: ++++" + + "\n" + method.getRequest().headers().toString() + + "+++++++++++++" + "\ntrace: " + ExceptionUtils.getStackTrace(e) + "---------------------------"); }