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
It looks like the throwIfNetworkNotAvailable() method is not reliable in Doze mode. We have a background worker that only runs when network is avalible. that checks if the access token has expired. When the token has expired it tries to refresh token with method acquireTokenSilentAsync(acquireTokenSilentParameters).
It works fine as long the user is active in the app but fails when the app is in Doze Mode with following issue.
SilentAuthenticationCallback -> onError
com.microsoft.identity.client.exception.MsalClientException: Connection is not available to refresh token
at com.microsoft.identity.client.internal.controllers.MsalExceptionAdapter.msalExceptionFromBaseException(MsalExceptionAdapter.java:53)
at com.microsoft.identity.client.SingleAccountPublicClientApplication$3.onError(SingleAccountPublicClientApplication.java:446)
at com.microsoft.identity.client.SingleAccountPublicClientApplication$3.onError(SingleAccountPublicClientApplication.java:432)
at com.microsoft.identity.common.java.controllers.CommandDispatcher.commandCallbackOnError(CommandDispatcher.java:639)
at com.microsoft.identity.common.java.controllers.CommandDispatcher.access$900(CommandDispatcher.java:98)
at com.microsoft.identity.common.java.controllers.CommandDispatcher$4.run(CommandDispatcher.java:619)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8919)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: com.microsoft.identity.common.java.exception.ClientException: Connection is not available to refresh token
at com.microsoft.identity.common.internal.result.MsalBrokerResultAdapter.getBaseExceptionFromExceptionType(MsalBrokerResultAdapter.java:363)
at com.microsoft.identity.common.internal.result.MsalBrokerResultAdapter.getBaseExceptionFromBundle(MsalBrokerResultAdapter.java:251)
at com.microsoft.identity.common.internal.result.MsalBrokerResultAdapter.getAcquireTokenResultFromResultBundle(MsalBrokerResultAdapter.java:710)
at com.microsoft.identity.common.internal.controllers.BrokerMsalController$5.extractResultBundle(BrokerMsalController.java:648)
at com.microsoft.identity.common.internal.controllers.BrokerMsalController$5.extractResultBundle(BrokerMsalController.java:619)
at com.microsoft.identity.common.internal.controllers.BrokerOperationExecutor.performStrategy(BrokerOperationExecutor.java:241)
at com.microsoft.identity.common.internal.controllers.BrokerOperationExecutor.execute(BrokerOperationExecutor.java:150)
at com.microsoft.identity.common.internal.controllers.BrokerMsalController.acquireTokenSilent(BrokerMsalController.java:618)
at com.microsoft.identity.common.java.commands.SilentTokenCommand.execute(SilentTokenCommand.java:88)
at com.microsoft.identity.common.java.commands.SilentTokenCommand.execute(SilentTokenCommand.java:48)
at com.microsoft.identity.common.java.controllers.CommandDispatcher.executeCommand(CommandDispatcher.java:539)
at com.microsoft.identity.common.java.controllers.CommandDispatcher.access$100(CommandDispatcher.java:98)
at com.microsoft.identity.common.java.controllers.CommandDispatcher$1.run(CommandDispatcher.java:364)
at io.opentelemetry.context.Context.lambda$wrap$1(Context.java:212)
at io.opentelemetry.context.Context$$ExternalSyntheticLambda4.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
what we need is a setting to disable that check by default
this change is done to CommonFlight where @rpdome mentions this issue: #2480
The text was updated successfully, but these errors were encountered:
It looks like the throwIfNetworkNotAvailable() method is not reliable in Doze mode. We have a background worker that only runs when network is avalible. that checks if the access token has expired. When the token has expired it tries to refresh token with method acquireTokenSilentAsync(acquireTokenSilentParameters).
It works fine as long the user is active in the app but fails when the app is in Doze Mode with following issue.
what we need is a setting to disable that check by default
this change is done to CommonFlight where @rpdome mentions this issue: #2480
The text was updated successfully, but these errors were encountered: