You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Steps to reproduce:I left App logged in and unused for 2 days and then opened
Actual behavior: NetworkErrorException is thrown
Expected Behavior:Auth token should get refreshed
Error Log: ClientManager: Exception thrown while getting auth token android.accounts.NetworkErrorException: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference at com.salesforce.androidsdk.rest.ClientManager$AccMgrAuthTokenProvider.refreshStaleToken(ClientManager.java:657) at com.salesforce.androidsdk.rest.ClientManager$AccMgrAuthTokenProvider.getNewAuthToken(ClientManager.java:529) at com.salesforce.androidsdk.rest.RestClient$OAuthRefreshInterceptor.refreshAccessToken(RestClient.java:735) at com.salesforce.androidsdk.rest.RestClient$OAuthRefreshInterceptor.intercept(RestClient.java:636) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference at okhttp3.HttpUrl.canonicalize(HttpUrl.java:1751) at okhttp3.FormBody$Builder.add(FormBody.java:121) at com.salesforce.androidsdk.auth.OAuth2.refreshAuthToken(OAuth2.java:338) at com.salesforce.androidsdk.rest.ClientManager$AccMgrAuthTokenProvider.refreshStaleToken(ClientManager.java:619) at com.salesforce.androidsdk.rest.ClientManager$AccMgrAuthTokenProvider.getNewAuthToken(ClientManager.java:529) at com.salesforce.androidsdk.rest.RestClient$OAuthRefreshInterceptor.refreshAccessToken(RestClient.java:735) at com.salesforce.androidsdk.rest.RestClient$OAuthRefreshInterceptor.intercept(RestClient.java:636) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764)
I debugged this in OAuth2.java method public static TokenEndpointResponse refreshAuthToken
on line formBodyBuilder.add(REFRESH_TOKEN, refreshToken); exception is thrown, caught by a general catch in ClientManager catch (Exception e) { SalesforceSDKLogger.w(TAG, "Exception thrown while getting new auth token", e); throw new NetworkErrorException(e); }
which is not expected as in this scenario Refresh token should not be null. and even if its is null... user should be logged out as it happens in refresh token expire. What currently user experience is that stuck in the app and getting network error but actually there is no network issue.
Also getting Encryptor: Error during decryption javax.crypto.BadPaddingException: pad block corrupted at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$BufferedGenericBlockCipher.doFinal(BaseBlockCipher.java:1306) at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(BaseBlockCipher.java:1139) at javax.crypto.Cipher.doFinal(Cipher.java:1799) at com.salesforce.androidsdk.analytics.security.Encryptor.decrypt(Encryptor.java:291) at com.salesforce.androidsdk.analytics.security.Encryptor.decrypt(Encryptor.java:154) at com.salesforce.androidsdk.analytics.security.Encryptor.decrypt(Encryptor.java:137) at com.salesforce.androidsdk.app.SalesforceSDKManager.decrypt(SalesforceSDKManager.java:1172) at com.salesforce.androidsdk.rest.ClientManager.peekRestClient(ClientManager.java:164) at com.salesforce.androidsdk.rest.ClientManager.peekRestClient(ClientManager.java:138) at com.salesforce.androidsdk.rest.ClientManager.getRestClient(ClientManager.java:115)
exception randomly.
The text was updated successfully, but these errors were encountered:
Hi. Still have this issue in 7.3.0 (version code 66) Android SDK.
An app can't refresh Auth token after some time of idle and throws RefreshTokenRevokedException in refreshAccessToken() method.
Refresh token policy set to "Refresh token is valid until revoked"
Please fill out the following details:
ClientManager: Exception thrown while getting auth token android.accounts.NetworkErrorException: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference at com.salesforce.androidsdk.rest.ClientManager$AccMgrAuthTokenProvider.refreshStaleToken(ClientManager.java:657) at com.salesforce.androidsdk.rest.ClientManager$AccMgrAuthTokenProvider.getNewAuthToken(ClientManager.java:529) at com.salesforce.androidsdk.rest.RestClient$OAuthRefreshInterceptor.refreshAccessToken(RestClient.java:735) at com.salesforce.androidsdk.rest.RestClient$OAuthRefreshInterceptor.intercept(RestClient.java:636) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference at okhttp3.HttpUrl.canonicalize(HttpUrl.java:1751) at okhttp3.FormBody$Builder.add(FormBody.java:121) at com.salesforce.androidsdk.auth.OAuth2.refreshAuthToken(OAuth2.java:338) at com.salesforce.androidsdk.rest.ClientManager$AccMgrAuthTokenProvider.refreshStaleToken(ClientManager.java:619) at com.salesforce.androidsdk.rest.ClientManager$AccMgrAuthTokenProvider.getNewAuthToken(ClientManager.java:529) at com.salesforce.androidsdk.rest.RestClient$OAuthRefreshInterceptor.refreshAccessToken(RestClient.java:735) at com.salesforce.androidsdk.rest.RestClient$OAuthRefreshInterceptor.intercept(RestClient.java:636) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764)
I debugged this in OAuth2.java method
public static TokenEndpointResponse refreshAuthToken
on line
formBodyBuilder.add(REFRESH_TOKEN, refreshToken);
exception is thrown, caught by a general catch in ClientManagercatch (Exception e) { SalesforceSDKLogger.w(TAG, "Exception thrown while getting new auth token", e); throw new NetworkErrorException(e); }
which is not expected as in this scenario Refresh token should not be null. and even if its is null... user should be logged out as it happens in refresh token expire. What currently user experience is that stuck in the app and getting network error but actually there is no network issue.
Also getting
Encryptor: Error during decryption javax.crypto.BadPaddingException: pad block corrupted at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$BufferedGenericBlockCipher.doFinal(BaseBlockCipher.java:1306) at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(BaseBlockCipher.java:1139) at javax.crypto.Cipher.doFinal(Cipher.java:1799) at com.salesforce.androidsdk.analytics.security.Encryptor.decrypt(Encryptor.java:291) at com.salesforce.androidsdk.analytics.security.Encryptor.decrypt(Encryptor.java:154) at com.salesforce.androidsdk.analytics.security.Encryptor.decrypt(Encryptor.java:137) at com.salesforce.androidsdk.app.SalesforceSDKManager.decrypt(SalesforceSDKManager.java:1172) at com.salesforce.androidsdk.rest.ClientManager.peekRestClient(ClientManager.java:164) at com.salesforce.androidsdk.rest.ClientManager.peekRestClient(ClientManager.java:138) at com.salesforce.androidsdk.rest.ClientManager.getRestClient(ClientManager.java:115)
exception randomly.
The text was updated successfully, but these errors were encountered: