I see several ppl posting about this error. Is anyone officially addressing the root cause?

I have seen several posts on the topic of log in errors. Is anyone officially addressing the root causes. I did not experience this until the August 2022 update. What is broken, and how is FAF going to fix it?

Client Version: 2022.8.0
com.faforever.client.login.TokenRetrievalException: {"error":"invalid_request","error_description":"The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed. Make sure that the various parameters are correct, be aware of case sensitivity and trim your parameters. Make sure that the client you are using has exactly whitelisted the redirect_uri you specified."}
at com.faforever.client.api.TokenService.lambda$retrieveToken$5(TokenService.java:124)
Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below:
Error has been observed at the following site(s):
*__checkpoint ā‡¢ 400 from POST https://hydra.faforever.com/oauth2/token [DefaultWebClient]
Original Stack Trace:
at com.faforever.client.api.TokenService.lambda$retrieveToken$5(TokenService.java:124)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125)
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$MonoSubscriber.complete(Operators.java:1816)
at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160)
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)
at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)
at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:400)
at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:419)
at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:473)
at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:703)
at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:93)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1373)
at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1236)
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1285)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:510)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:449)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:279)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496)
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:833)

Nothing will happen because no developer can reproduce the login problems (also from the posts in the forum its usually not the same error). I'm not even sure if it is reproducible for the users posting it here. And for the majority of players it just works.

So unless someone can reproduce it and offers screensharing and installing developer tools nothing is about to happen.

"Nerds have a really complicated relationship with change: Change is awesome when WE'RE the ones doing it. As soon as change is coming from outside of us it becomes untrustworthy and it threatens what we think of is the familiar."
ā€“ Benno Rice

Hi,
My issue (which usually gives a 'connection refused') is certainly reproducable - just not 100% of the time. Right now, the client is refusing to connect, but I bet if I try in 10 minutes, it'll work. Sometimes it fails right away, sometimes it's stuck for a minute or 2 logging in.

I ran a traceroute on api.faforever.com:

traceroute api.faforever.com
traceroute to api.faforever.com (116.202.155.226), 30 hops max, 60 byte packets
 1  OpenWrt.lan (192.168.1.1)  0.385 ms  0.369 ms  0.446 ms
 2  192.168.2.1 (192.168.2.1)  1.328 ms  1.458 ms  1.520 ms
 3  p3e9bf094.dip0.t-ipconnect.de (62.155.240.148)  5.900 ms  5.882 ms  5.996 ms
 4  n-ea9-i.N.DE.NET.DTAG.DE (217.5.75.90)  25.070 ms  25.247 ms  25.039 ms
 5  62.157.248.138 (62.157.248.138)  17.401 ms  17.385 ms  17.509 ms
 6  core23.fsn1.hetzner.com (213.239.252.246)  30.588 ms  28.461 ms core24.fsn1.hetzner.com (213.239.252.250)  18.777 ms
 7  ex9k1.dc1.fsn1.hetzner.com (213.239.245.234)  18.582 ms ex9k1.dc1.fsn1.hetzner.com (213.239.245.230)  19.002 ms ex9k1.dc1.fsn1.hetzner.com (213.239.245.234)  19.988 ms
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

Seems somehow along the way, I do get blocked, and it's not my computer or network doing the blocking. Yet https://downforeveryoneorjustme.com/api.faforever.com says the server is up, so it's my ip that gets blocked perhaps?

Just now, the client logged in, but then is stuck in a weird limbo way:

Screenshot_20220915_081756.png

As I otherwise have no network issues, it does seem there's something in the faf client or server. I now have a hanging client, so there's that. After killing it - it logs in without issues. Traceroute still gives the same outcome.

It all seems magic to me šŸ˜‰

If there's anything I can run locally to help track down the issue, just let me know.