Eosu 404 auth token reauth p2p disconnects#1237
Eosu 404 auth token reauth p2p disconnects#1237JessTello wants to merge 7 commits intorelease-6.0.2from
Conversation
[Public] Release 6.0.0
- Added Connect AuthExpiration notify registration with minimal diagnostic logging - Cached the last Connect LoginOptions and credential type to support safe re-auth attempts - Implemented PUID change detection to log when the ProductUserId remains stable or changes mid-session - Introduced a reauth-in-progress guard to prevent concurrent Connect.Login storms during token refresh - Added a debug hook to force a Connect re-login using a fresh Epic IdToken (CopyIdToken -> Connect.Login)
| { | ||
| Debug.LogWarning( | ||
| $"{nameof(EOSManager)} Connect auth expired but last credential type was {s_lastConnectCredentialType}. " + | ||
| $"Plugin cannot refresh that token automatically. Game should re-fetch external token and call StartConnectLoginWithOptions again."); |
There was a problem hiding this comment.
Is there documentation for this? It's a bit of an unusual case where it handles it in certain circumstances
There was a problem hiding this comment.
Added handling for auth-expiration by credential type: we only auto-refresh when the last Connect credential is EpicIdToken (via fresh CopyIdToken -> Connect.Login). For other credential types we log a warning and require the game to re-fetch the external token and re-initiate StartConnectLoginWithOptions.
There was a problem hiding this comment.
What I mean is that this is only something that developers will see when running the game for long enough that auth expires. Also, in a specific case the plugin is handling re-authing for them, so it would be easy for someone to miss this on other platforms. It would be good to get documentation added that covers this to avoid support tickets
There was a problem hiding this comment.
In the new commit on line 1830 I added a very detailed comment. Please let me know if this is enough or if you prefer that I include an XML in the documentation.
There was a problem hiding this comment.
Yea, adding a markdown file to the documentation is what I mean
9d7ab44 to
1fa8dd5
Compare
- Updated new diagnostics to use the Log() wrapper instead of Debug.Log - Moved OnConnectLogin call into the finally block - Prevented onLoginCallback from being called twice - Removed Debug_RefreshConnectLoginWithFreshEpicIdToken() debug helper - Fixed variable name for better readability and consistency - Added handling for auth-expiration: if credential type isn't EpicIdToken, log warning and require game to re-fetch the token. - Added safety check to prevent silently overwriting the local PUID if a different ProductUserId is returned. - Reduced duplication by making RefreshConnectLoginWithFreshEpicIdToken() reuse the StartConnectLoginWithEpicAccount() flow where applicable.
1fa8dd5 to
7da495b
Compare
|
Once requested changes are resolved, please retarget to release-6.0.2 |
…uth policy - Always invoke OnConnectLogin / onloginCallback from finally (exactly-once). - Add inline docs for auth-expiration credential policy. - Remove unused caching and minor handler cleanup
Removed ignore PUID change early-return so cached LocalProductUserId always stays consistent with the SDK
- Revised token refresh policy documentation to clearly differentiate EpicIdToken flows from external credential flows. - Downgraded ProductUserId runtime-change message from Error to Warning to better reflect non-fatal behavior. - Removed redundant comments referencing restrictions on logging.
| { | ||
| Debug.LogWarning( | ||
| $"{nameof(EOSManager)} Connect auth expired but last credential type was {s_lastConnectCredentialType}. " + | ||
| $"Plugin cannot refresh that token automatically. Game should re-fetch external token and call StartConnectLoginWithOptions again."); |
There was a problem hiding this comment.
Yea, adding a markdown file to the documentation is what I mean
| Log($"[EOS][AuthExp] received. CredentialType={s_lastConnectCredentialType}", LogType.Warning); | ||
|
|
||
| // Prevent concurrent re-auth attempts from repeated expiration notifications. | ||
| if (Interlocked.Exchange(ref s_connectReauthInProgress, 1) == 1) |
There was a problem hiding this comment.
Discussion in the thread about whether locking is required is still ongoing in the thread
Added Connect AuthExpiration notify registration with minimal diagnostic logging