Skip to content

Commit 28c0d83

Browse files
@W-20026518: [MSDK Android] Null OAuth Refresh Token Parameters During User App Upgrade From MSDK 12.0.1 To 13.0.2 Cause Unexpected Logout (#2794)
1 parent 6a69428 commit 28c0d83

4 files changed

Lines changed: 9 additions & 6 deletions

File tree

libs/SalesforceSDK/src/com/salesforce/androidsdk/accounts/UserAccountManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,8 @@ public Bundle updateAccount(Account account, UserAccount userAccount) {
504504

505505
final String encryptionKey = SalesforceSDKManager.getEncryptionKey();
506506
final String accountName = accountManager.getUserData(account, AccountManager.KEY_ACCOUNT_NAME);
507+
508+
// Maintenance Note: All account values are nullable by default. If a value requires a default value when user's of older versions experience access token refresh, provide that here.
507509
final String refreshToken = SalesforceSDKManager.decrypt(accountManager.getPassword(account), encryptionKey);
508510
final String authToken = decryptUserData(account, AccountManager.KEY_AUTHTOKEN, encryptionKey);
509511
final String loginServer = decryptUserData(account, AuthenticatorService.KEY_LOGIN_URL, encryptionKey);
@@ -535,6 +537,7 @@ public Bundle updateAccount(Account account, UserAccount userAccount) {
535537
final String cookieSidClient = decryptUserData(account, AuthenticatorService.KEY_COOKIE_SID_CLIENT, encryptionKey);
536538
final String sidCookieName = decryptUserData(account, AuthenticatorService.KEY_SID_COOKIE_NAME, encryptionKey);
537539
final String clientId = decryptUserData(account, AuthenticatorService.KEY_CLIENT_ID, encryptionKey);
540+
538541
final String parentSid = decryptUserData(account, AuthenticatorService.KEY_PARENT_SID, encryptionKey);
539542
final String tokenFormat = decryptUserData(account, AuthenticatorService.KEY_TOKEN_FORMAT, encryptionKey);
540543
final String beaconChildConsumerKey = decryptUserData(account, AuthenticatorService.KEY_BEACON_CHILD_CONSUMER_KEY, encryptionKey);

libs/SalesforceSDK/src/com/salesforce/androidsdk/auth/AuthenticatorService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public Bundle getAuthToken(AccountAuthenticatorResponse response, Account accoun
159159
return resBundle;
160160

161161
} catch (Exception e) {
162-
SalesforceSDKLogger.w(TAG, "Exception thrown while getting new auth token", e);
162+
SalesforceSDKLogger.e(TAG, "Exception thrown while getting new auth token", e);
163163
throw new NetworkErrorException(e);
164164
}
165165
}

libs/SalesforceSDK/src/com/salesforce/androidsdk/auth/OAuth2.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,12 @@
4646
import java.text.DateFormat;
4747
import java.text.ParseException;
4848
import java.text.SimpleDateFormat;
49-
import java.util.Arrays;
5049
import java.util.Date;
5150
import java.util.HashMap;
5251
import java.util.List;
5352
import java.util.Locale;
5453
import java.util.Map;
55-
import java.util.Set;
5654
import java.util.TimeZone;
57-
import java.util.TreeSet;
5855

5956
import okhttp3.FormBody;
6057
import okhttp3.Request;
@@ -452,7 +449,10 @@ public static TokenEndpointResponse refreshAuthToken(HttpAccess httpAccessor, UR
452449
builder.add(FORMAT, JSON);
453450
if (addlParams != null ) {
454451
for (final Map.Entry<String,String> entry : addlParams.entrySet()) {
455-
builder.add(entry.getKey(),entry.getValue());
452+
// Safely ignore missing values since, for instance, a user account that is being upgraded may not have received that value yet.
453+
if (entry.getValue() != null) {
454+
builder.add(entry.getKey(), entry.getValue());
455+
}
456456
}
457457
}
458458
return makeTokenEndpointRequest(httpAccessor, loginServer, builder);

libs/SalesforceSDK/src/com/salesforce/androidsdk/rest/ClientManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ private UserAccount refreshStaleToken(Account account) throws NetworkErrorExcept
508508
}
509509
return null;
510510
} catch (Exception e) {
511-
SalesforceSDKLogger.w(TAG, "Exception thrown while getting new auth token", e);
511+
SalesforceSDKLogger.e(TAG, "Exception thrown while getting new auth token", e);
512512
throw new NetworkErrorException(e);
513513
}
514514
}

0 commit comments

Comments
 (0)