The current pre-release of the client ("pioneer" in the version) is only compatible to itself. So you can only play with other testers. Please be aware!
Token Retrieval Exception During Login (Client v2025.2.1)
-
Hi everyone,
I just wanted to report the exact error I'm currently getting when trying to log into FAF, in case it helps the dev team with debugging. I’ve seen the announcement acknowledging the login issues and that the team is already working on it, so this post is just to provide additional details for reference.
Client Version: 2025.2.1 com.faforever.client.login.TokenRetrievalException: <!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta name="robots" content="noindex,nofollow"><meta name="viewport" content="width=device-width,initial-scale=1"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;max-width:60rem;padding-left:1.5rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{font-size:1.5rem;font-weight:500;line-height:2.25rem}@media (width <= 720px){.h2{font-size:1.25rem;line-height:1.5rem}}#challenge-error-text{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0IyMEYwMyIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjQjIwRjAzIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+);background-repeat:no-repeat;background-size:contain;padding-left:34px}@media (prefers-color-scheme:dark){body{background-color:#222;color:#d9d9d9}}</style><meta http-equiv="refresh" content="360"></head><body><div class="main-wrapper" role="main"><div class="main-content"><noscript><div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></noscript></div></div><script>(function(){window._cf_chl_opt={cvId: '3',cZone: "hydra.faforever.com",cType: 'non-interactive',cRay: '94233e1a3be752de',cH: 'bYfaloKRCemWR1cZQtiIvBNqJYzs.NmqPCeXEQ.aJdA-1747654020-1.2.1.1-McQ45TnO8FiBm0sPKfF1wVEkUbaggPkIYv6Q7kYcv6DTg5kUWu_N0_czCMmewuxe',cUPMDTk: "\/oauth2\/token?__cf_chl_tk=ytdn9ABBRcc7HW0gQbzTyfWs2iGMN4m3xcUHJSlFumY-1747654020-1.0.1.1-atDDa.tcVS8gQwQ04l9JuCh2DACiIe0XqNOyt7aZLhk",cFPWv: 'g',cITimeS: '1747654020',cTplC: 0,cTplV: 5,cTplB: 'cf',fa: "\/oauth2\/token?__cf_chl_f_tk=ytdn9ABBRcc7HW0gQbzTyfWs2iGMN4m3xcUHJSlFumY-1747654020-1.0.1.1-atDDa.tcVS8gQwQ04l9JuCh2DACiIe0XqNOyt7aZLhk",md: "sDsRNetzLfjfu22_hVbzu6WtJVFZB_cg34qbWsXUbGo-1747654020-1.2.1.1-_D0CMzmjWd_t4iXX2D4tUVctw1DF4SoBYh7HK.qCU42GEwV6_xdwZ0abBumluHHBjQ7MGvzHiqjYedQ17HKiqG1KUWCttikJrebrq.nMThx9j.iXoKLJpEqZCUvHWyv1BJC55zuNhKpLj4CC4trsrCOawnLpTroDt3k_TM364GxU2GRir7CeYBWkXtR9Zbf29tCD7AacyBQb9bHxXJLVXlCMv.uELKdTbH.sliOLjJUxYsEKBJ13WrXFvqMP7QundFfdQX.aaxV_USLJyBq5BrNHnI4VTnlbhhbejRySxVpYwS5Kstu43VXG.obRBIppt8do5qZ6fXoy8QIDN0n6OMf_0sBlNT0H2zHf.zTy6mAw7gNWL6FbZFnyRvd1jrvD8.Y0BK6LxAzeX9kpuC3QyDBw7BDPU9a_Ai6h5f5GQLzE4CwF5aQ9PggI4OFsA.4zrQA5WnMqSwczmZJHgEVAoEOF4cfV2b_N6nE._tsOrVHWuOO.WNlxu70pI4z9GOUkeTlPHmrStZcbYgveEwyZS.QPcj0WV_NHWpTh0H48VADgKkSRE64sj1eSjbDIG04mzb_D6ADz90pRF.uIRQd_.H_KzeieHvrdcj6o.r9NRcE6bM.ZZQVv_xhjTqPg1qqZ1.bEgJLYxRAblQelDsH13RwW3aq_AlHSMO32miW853tGya_nHtrKn6QmuBsmotR0KLHmEqjdUjzq3pJWnbJltRsn8WWKK2GI8NXn8ZZMyNGdYkvT2S6n3dTmQHGIASX5zjWy08T228XcEf1aH3Va5LhfjtcmUrae4PkV4trdqKXRetBYC2.WjHQW25ZCmNKGq11JeMYKQoCaCInYmCA_RZQbbf41hEEeBJzzlX5AmynATqKISEpiUHtGO.hJ1YIkiE6XZMuQ8jsvuzCwfI2.vM7N8KITEhELLLymuVpvTik",mdrd: "qMnqhUpsG0DLutuP6jQiqzmgJgQC_xLQnNVVogX1ES4-1747654020-1.2.1.1-5m3KmrXSjSeoGWn1l6QlkcqdVwX7fxE9UXCoLsxZjUGzriWs0Nr7naAEtu1LZsfxIao7fokbFOHPhAukU_wFZMzM2DMlECDmXonvngPruDMkClrFa9Uv0wcE_GYDhDXX7NnwqwDMO2hz3ZL8rIqvxnVcu4HU2nXzMA01exJ5GkjykYXT9RwRj4EP0RXJuUpyFuMz.KiZPPmy5YDdEJz61TSMqPEyqz5z4ozecpr1zeqdBsgDF4XOF3pEKInMLnP0AmJBRXTg.n.90slK8XVkSdetw3RYEAOZybJtqJrI6nMlqD8k0_6uqRO2NHPJB7udjW7_lQ3JQamkY1e8WaUVdXEkU4oJEGIC6iLIJ5FYYdXb5NwgvtqrBHpsTld9u076i3lYvgfbZn9BKgYeuT8A09E7L82yW0cA1HOt8h_bIZj9kL3BgEA2SaUP002xrS5gWUw30ko7stufDtBbrOdmKuziQ4Wjb4oZ_d870Nfcrg2QUBLZVPhQ9KRBehili736WHZtHJvfyb5g2pYJfm7SiJ7L35eLmlZiwJ4Aqiy8spmZaY9ckMIbxg2ChFZwlxECelSXZQCfuyiCE9UvafdS154hlE.xefjo4ePR3GfwFT6KBPt58aQdFdpRxx1ConABmqxt2a6GUnPA_X8KSQjHmbzrDNMK6h8941kvXbPBlxGcqGv.2PqaG6LKUf0ZFa.5.42hZ5Aa0Eo75m2RDzfipPTauVxQKGWhGOiKlSQ3sRVrlQcfP71EgldTh_t6Grr8D.CEpeSCsSDSgy2wU.wOfAx7DRfkB90wUeZzy6nczGQtcoOmNlhfYyTdu07yI5y.Ug3DvF8DUImQSpHGmjJvh9zdSGq2HEcZnESQysjqrToqvBukeSCpLt3uGJD2qRZBAantkkCahdvqHrL3mp_yIB9ghQwlxJGjAs03hkM1iF.UUMtHdW9St1BrKuW_OIsO_C2gj7rjHdTlazMdewT48I1Fv.0Gnk7TAOsYEOQzykhG3lyTV8Pi13Gu2Sne3LrKoGVIQSHAW_uOEC7c6mHKn3ohVamCm3NxIPrgtiLCelHHNt_4i6vvqZqLWnwa7DGr267BodZ9X70KxqwxNp.UAPQXY0RLZtEt.O3MIzU4apkEk8fiReR2xq11YF88_9i9KKzkttxanOUJju1A1BZaIRQwibRvjvwxL3yYzMg25IInL3hB7ww7GK9SM6h7tnOhuacNoP9lygRbFe8TEMo4iSlSrj5tRc3mIMO9StlmdaHeMj8WvxGVFAM.2uZk.GUucBkh3gmY6iz7wVCUHzD56Z4Qb0khS8LuQajOgIYSwe8qFYJTqdI.uwNqj4A1tWLSFxnHtgtdiUdvzQ_PZpDfyPQfU.U.RiKEVSJMNfJPja0RRXMR77hOvqEOA7wpuHWnPRis5RxXq0Q98hYfa3Ul51REYU4wwa9Gn1SK7PwxymapCLJJgsB3zIoYWuKmnQcuP4_MzHua5Qn05hsXLuOKuL2tncmMv_vYBTy.A2G7AjlTB3GqtNy75HSR2C0jnxNMqWrpp6F4b5iXrB74HOAE4Zyat9dfJ2t78VKYJM3ZPXyw.61yftqgxP9DOJAX3PJmY2epd0S5fYC3xo3MSa7Y0CmUpJ0n3COP6GYpQUfaXGo4mrli8IGs1F81I9ugmOvAAd6O0Edh.Wr8.o_UCqT8_SMQDo_BI3nOu45GAoYdEjx9H7DSkcdYTA2oWq1cerJQxNPXd4VndP5t3mXGRcT7XzPKgBKdZg1Vb4xglmB46lC8EqeyjZ7RjDWIX4FlFhPXSj0YRDTMIRgy7NngO_EyVE2x5UEGmo5sDrQaSVFebFJVjQST3gQo6twsEZ2_3jeDeYgATYeXfz_pFNo8kaoXb2rWEvn1hA.V1GQDtieT6w2xPpC3JjDFfocOJY89E8XupnG3X9Z9dnnAMOmZO02IvQFaX8_secrjVK3M8Fqge5MgVmEl6iYgYwrgpUCTqsQj1OHAWfPzMqW0eKbKuKNWvKAFAwvk5.RKJsBPx6yQOdaVdevRBck.O.JW3zqNfwf8IhvTcTeJz9aGaCr78qte3nbKj9qs2fDotMCch9B5.DTL_LBR7o.vu4VWVcTtEiQ9KHb0.vLV4bIGKkSIsqJPgQSQMwzB0OF6yrT_J_aONWw1gzFByjdYuXbeIj.IXLVIyD1rnlrnRS.vN1_f12XELfEWgAdn1kho.e6B..YvRhP37vmLVRB8.ajrIjrYpaMFSAGrYb64eKNExCEWmXwQjT8vLlov45rYEehas7LFbAi7Xxupkc.2A5uCS.hT7.m5othvVHZJJQBcs0KKlobBxxcGVZbMU6cPXT8iOvzyXL4f4GUMwNazsWbWdM_B83UJv15IZ7M5FQI1497BwrbDWGQf0aPmUne4L96VFtHKbwDlkVUwS5oyMDtVM2pTOZNmS9aYCgalatFgRfLaLBiejiIdjegM9zAiKBcnN.vRykjTID4Wdm8kr.29.1DRD14I8Tr3JD6gpC3wCDzS_u8YvrbwQL2iGjWkZDEL1Xqry7fDu.Ehr4R.9I9abWu7oJmVf00VTSdawby0h1JJMKS0fLO3hcYbHGQKyiBimHbPr.skf2thMIs1qSXllQhiO7jC26K2KyRe9LnjYR7OwstFziYWw1gW3MgWAXwgg1jMEItkdkjZAT0Z97S._1mpR_.cz7WgYdJjBuqAqs4iENljmB381xEUjCgYTGyrVZy2ItEqUrPt0Sw1nGcRL34.L4j6ZN46PizroDW58MGpM4xXCfn18r._uMqpRjjwrTa4owEpvmZhqr8RDoOnJLSaskFhKZA44GfqKeGUp4JdlEGFNdpDme0XBEVQfYPEo6vUicTFPxcGvK_JOs4O2OyffJ79OHu0osOEd2_l2t.VrrlshMaaTH2auqxTNSB4yVHhJ_spStSoDH3i7.kH2exW8hM8VGUYAOAjW6GXvjYkf3kTfg"};var cpo = document.createElement('script');cpo.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/chl_page/v1?ray=94233e1a3be752de';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null, "\/oauth2\/token?__cf_chl_rt_tk=ytdn9ABBRcc7HW0gQbzTyfWs2iGMN4m3xcUHJSlFumY-1747654020-1.0.1.1-atDDa.tcVS8gQwQ04l9JuCh2DACiIe0XqNOyt7aZLhk" + window._cf_chl_opt.cOgUHash);cpo.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(cpo);}());</script></body></html> at com.faforever.client.api.TokenRetriever.lambda$retrieveToken$1(TokenRetriever.java:110) Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: Assembly trace from producer [reactor.core.publisher.MonoFlatMap] : reactor.core.publisher.Mono.flatMap com.faforever.client.api.TokenRetriever.lambda$retrieveToken$2(TokenRetriever.java:110) Error has been observed at the following site(s): *________Mono.flatMap ⇢ at com.faforever.client.api.TokenRetriever.lambda$retrieveToken$2(TokenRetriever.java:110) |_ Mono.flatMap ⇢ at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultRequestBodyUriSpec.lambda$exchangeToMono$3(DefaultWebClient.java:424) |_ Mono.switchIfEmpty ⇢ at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultRequestBodyUriSpec.lambda$exchangeToMono$3(DefaultWebClient.java:425) |_ Mono.onErrorResume ⇢ at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultRequestBodyUriSpec.lambda$exchangeToMono$3(DefaultWebClient.java:426) *___________Mono.then ⇢ at org.springframework.web.reactive.function.client.DefaultWebClient.releaseIfNotConsumed(DefaultWebClient.java:197) |_ ⇢ at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultRequestBodyUriSpec.lambda$exchangeToMono$2(DefaultWebClient.java:426) *________Mono.flatMap ⇢ at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultRequestBodyUriSpec.exchangeToMono(DefaultWebClient.java:421) |_ Mono.doOnSubscribe ⇢ at com.faforever.client.api.TokenRetriever.retrieveToken(TokenRetriever.java:115) |_ Mono.doOnNext ⇢ at com.faforever.client.api.TokenRetriever.retrieveToken(TokenRetriever.java:116) |_ Mono.map ⇢ at com.faforever.client.api.TokenRetriever.retrieveToken(TokenRetriever.java:120) |_ Mono.doOnNext ⇢ at com.faforever.client.api.TokenRetriever.retrieveToken(TokenRetriever.java:121) |_ Mono.then ⇢ at com.faforever.client.api.TokenRetriever.loginWithAuthorizationCode(TokenRetriever.java:73) *___________Mono.then ⇢ at com.faforever.client.user.LoginService.login(LoginService.java:70) |_ ⇢ at com.faforever.client.login.LoginController.loginWithCode(LoginController.java:278) Original Stack Trace: at com.faforever.client.api.TokenRetriever.lambda$retrieveToken$1(TokenRetriever.java:110) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:132) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2097) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:145) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:413) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:455) at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:509) at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:819) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:115) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1515) at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1378) at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1427) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:1583)