RetroArch icon indicating copy to clipboard operation
RetroArch copied to clipboard

Retroachivements login errors

Open warlockv2 opened this issue 5 years ago • 10 comments

First and foremost consider this:

  • Only RetroArch bugs should be filed here. Not core bugs or game bugs
  • This is not a forum or a help section, this is strictly developer oriented

Description

Running games, retroachivements throws errors saying login error, yet login is correct

Expected behavior

Retroachivements works and logs in correctly

Actual behavior

It does not log in and errors out

Steps to reproduce the bug

  1. Input log in information with user and pass
  2. Boot a game that supports achivements
  3. recive log in error

Bisect Results

recent updates? retroachivement forums seems to suggest its a reletivly sporatic issue with many having same problem, but others do not

Version/Commit

You can find this information under Information/System Information

  • RetroArch: 1.8.5 nightly

Environment information

  • OS: windows 10
  • Compiler: [In case you are running local builds]

warlockv2 avatar Mar 26 '20 18:03 warlockv2

Could you post the logs? RetroAchievements has pretty good log information.

RobLoach avatar Mar 26 '20 18:03 RobLoach

Sure. Where would i fine them?

On Thu., Mar. 26, 2020, 4:15 p.m. Rob Loach, [email protected] wrote:

Could you post the logs? RetroAchievements has pretty good log information.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/libretro/RetroArch/issues/10353#issuecomment-604614079, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGDVJWNTO35K35VBXSFY6H3RJOPDXANCNFSM4LUOLHXA .

warlockv2 avatar Mar 26 '20 19:03 warlockv2

nvm.... i didnt have loggin on, here you are

[INFO] RetroArch 1.8.5 (Git 9f7e55e59d) [INFO] === Build ======================================= [INFO] CPU Model Name: AMD Ryzen 5 2600X Six-Core Processor
[INFO] Capabilities: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX [INFO] Built: Mar 26 2020 [INFO] Version: 1.8.5 [INFO] Git: 9f7e55e59d [INFO] ================================================= [INFO] [Environ]: SET_PIXEL_FORMAT: RGB565. [INFO] Redirecting save file to "E:\RetroArch\saves.srm". [INFO] Redirecting savestate to "E:\RetroArch\states.state". [INFO] Version of libretro API: 1 [INFO] Compiled against API: 1 [INFO] [Audio]: Set audio input rate to: 30000.00 Hz. [INFO] [Video]: Video @ 960x720 [INFO] [GL]: Found GL context: wgl [INFO] [GL]: Detecting screen resolution 1920x1080. [INFO] [WGL] extensions: WGL_ARB_buffer_region WGL_ARB_create_context WGL_ARB_create_context_no_error WGL_ARB_create_context_profile WGL_ARB_create_context_robustness WGL_ARB_context_flush_control WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_mult [INFO] [WGL]: Adaptive VSync supported. [INFO] [WGL]: wglSwapInterval(1) [INFO] [GL]: Vendor: NVIDIA Corporation, Renderer: GeForce RTX 2060/PCIe/SSE2. [INFO] [GL]: Version: 4.6.0 NVIDIA 445.75. [INFO] [GL]: Using ARB_sync to reduce latency. [INFO] [GL]: Using resolution 960x720 [INFO] [GL]: Default shader backend found: glsl. [INFO] [Shader driver]: Using GLSL shader backend. [INFO] [GLSL]: Checking GLSL shader support ... [WARN] [GL]: Stock GLSL shaders will be used. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] Setting up menu pipeline shaders for XMB ... [INFO] [GLSL]: Compiling ribbon shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling simple ribbon shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling snow shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling modern snow shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling bokeh shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling snowflake shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GL]: Using 4 textures. [INFO] [GL]: Loaded 1 program(s). [INFO] [GL]: Using GL_RGB565 for texture uploads. [INFO] [XInput]: Found XInput v1.4. [INFO] [XInput]: Found controller, user #1 [INFO] [XInput]: Pads connected: 1 [INFO] [DINPUT]: Enumerating joypads ... [INFO] [DINPUT]: Device #0 PID: {02FF} VID:{045E} [INFO] [DINPUT]: Done enumerating joypads ... [INFO] [XInput]: Attempting autoconf for "XBOX One Controller (User 1)", user #0 [INFO] [DINPUT]: Found XInput pad at index 0 (DINPUT index 0) [INFO] [XInput]: Found VID/PID (045E/02FF) from DINPUT index 0 for "XBOX One Controller (User 1)", user #0 [INFO] [XInput]: Attempting autoconf for user #1 [INFO] [XInput]: Attempting autoconf for user #2 [INFO] [XInput]: Attempting autoconf for user #3 [INFO] [XInput]: Attempting autoconf for user #4 [INFO] [XInput]: Attempting autoconf for user #5 [INFO] [XInput]: Attempting autoconf for user #6 [INFO] [XInput]: Attempting autoconf for user #7 [INFO] [XInput]: Attempting autoconf for user #8 [INFO] [XInput]: Attempting autoconf for user #9 [INFO] [XInput]: Attempting autoconf for user #10 [INFO] [XInput]: Attempting autoconf for user #11 [INFO] [XInput]: Attempting autoconf for user #12 [INFO] [XInput]: Attempting autoconf for user #13 [INFO] [XInput]: Attempting autoconf for user #14 [INFO] [XInput]: Attempting autoconf for user #15 [INFO] [Joypad]: Found joypad driver: "xinput". [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Video]: Found display server: win32 [INFO] [XAudio2]: Requesting 64 ms latency, using 64 ms latency. [INFO] [Menu]: Found menu display driver: "gl". [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Menu]: Found menu display driver: "gl". [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [LED]: LED driver = 'null' 0000000000B99340 [INFO] [MIDI]: Initializing ... [INFO] [MIDI]: Input disabled. [INFO] [MIDI]: Output disabled. [INFO] [MIDI]: Initialized "winmm" driver. [WARN] Input device ID 5 is unknown to this libretro implementation. Using RETRO_DEVICE_JOYPAD. [WARN] Input device ID 5 is unknown to this libretro implementation. Using RETRO_DEVICE_JOYPAD. [INFO] SRAM will not be saved. [INFO] Loading history file: [E:\RetroArch\content_history.lpl]. [INFO] Loading history file: [E:\RetroArch\content_music_history.lpl]. [INFO] Loading history file: [E:\RetroArch\content_video_history.lpl]. [INFO] Loading history file: [E:\RetroArch\content_image_history.lpl]. [INFO] Loading favorites file: [E:\RetroArch\content_favorites.lpl]. [INFO] [GL]: VSync => on [INFO] [WGL]: wglSwapInterval(1) [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [GL]: VSync => on [INFO] [WGL]: wglSwapInterval(1) [INFO] Using content: D:\GAME BACKUPS\NO INTRO\SNES\Zombies Ate My Neighbors (USA).sfc. [INFO] arg #0: retroarch [INFO] arg #1: D:\GAME BACKUPS\NO INTRO\SNES\Zombies Ate My Neighbors (USA).sfc [INFO] arg #2: -s [INFO] arg #3: E:\RetroArch\saves [INFO] arg #4: -S [INFO] arg #5: E:\RetroArch\states [INFO] arg #6: -c [INFO] arg #7: E:\RetroArch\retroarch.cfg [INFO] arg #8: -L [INFO] arg #9: E:\RetroArch\cores\higan_sfc_libretro.dll [INFO] arg #10: -v [INFO] Content ran for a total of: 00 hours, 00 minutes, 00 seconds. [INFO] Unloading game.. [INFO] Unloading core.. [INFO] Unloading core symbols.. [INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames. [INFO] RetroArch 1.8.5 (Git 9f7e55e59d) [INFO] Redirecting save file to "E:\RetroArch\saves\Zombies Ate My Neighbors (USA).srm". [INFO] Redirecting savestate to "E:\RetroArch\states\Zombies Ate My Neighbors (USA).state". [INFO] === Build ======================================= [INFO] CPU Model Name: AMD Ryzen 5 2600X Six-Core Processor
[INFO] Capabilities: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX [INFO] Built: Mar 26 2020 [INFO] Version: 1.8.5 [INFO] Git: 9f7e55e59d [INFO] ================================================= [INFO] Loading dynamic libretro core from: "E:\RetroArch\cores\higan_sfc_libretro.dll" [INFO] [Overrides] core-specific overrides found at E:\RetroArch\config\higan (Super Famicom Accuracy)\higan (Super Famicom Accuracy).cfg. [INFO] [Overrides] content-dir-specific overrides found at E:\RetroArch\config\higan (Super Famicom Accuracy)\Zombies Ate My Neighbors (USA).cfg. [INFO] [Overrides] content-dir-specific overrides stacking on top of previous overrides. [INFO] [Overrides] game-specific overrides found at E:\RetroArch\config\higan (Super Famicom Accuracy)\Zombies Ate My Neighbors (USA).cfg. [INFO] [Overrides] game-specific overrides stacking on top of previous overrides [INFO] Config: appending config "E:\RetroArch\config\higan (Super Famicom Accuracy)\higan (Super Famicom Accuracy).cfg" [INFO] Config: appending config "E:\RetroArch\config\higan (Super Famicom Accuracy)\SNES.cfg" [INFO] Config: appending config "E:\RetroArch\config\higan (Super Famicom Accuracy)\Zombies Ate My Neighbors (USA).cfg" [INFO] [Environ]: GET_LOG_INTERFACE. [INFO] [Environ]: SET_CONTROLLER_INFO. [INFO] [Environ]: SET_INPUT_DESCRIPTORS: [INFO] [Environ]: SET_VARIABLES. [INFO] [Remaps]: remap directory: E:\RetroArch\config\remaps [INFO] Redirecting save file to "E:\RetroArch\saves\Zombies Ate My Neighbors (USA).srm". [INFO] Redirecting savestate to "E:\RetroArch\states\Zombies Ate My Neighbors (USA).state". [INFO] Loading content file: D:\GAME BACKUPS\NO INTRO\SNES\Zombies Ate My Neighbors (USA).sfc. [INFO] Did not find a valid content patch. [INFO] [Environ]: SET_PIXEL_FORMAT: XRGB8888. [INFO] [Environ]: SYSTEM_DIRECTORY: "E:\RetroArch\system". [libretro INFO] Icarus writes file: game.sfc. [libretro INFO] Icarus successfully read: game.sfc. [libretro INFO] Icarus writes file: manifest.bml. [libretro INFO] Icarus writes file: program.rom. [libretro INFO] Icarus writes file: msu1.rom. [libretro INFO] Using base path: E:/RetroArch/saves/Zombies Ate My Neighbors (USA). for game data. [libretro INFO] Accessing data from 0: manifest.bml (required: yes) [libretro INFO] Accessing data from 0: ipl.rom (required: yes) [libretro INFO] Loading game for ID: 1 using option Auto. [libretro INFO] Accessing data from 1: manifest.bml (required: yes) [libretro INFO] Reading imported file: manifest.bml. [libretro INFO] Loaded Manifest: board region=ntsc rom name=program.rom size=0x100000 map address=00-7d,80-ff:8000-ffff mask=0x8000 map address=40-6f,c0-ef:0000-7fff mask=0x8000 msu1 map address=00-3f,80-bf:2000-2007 rom name=msu1.rom

information

[libretro INFO] Accessing data from 1: program.rom (required: yes) [libretro INFO] Reading imported file: program.rom. [libretro INFO] Accessing data from 1: msu1.rom (required: no) [libretro INFO] Reading imported file: msu1.rom. [libretro INFO] Accessing data from 1: track-0.pcm (required: no) [libretro INFO] E:/RetroArch/saves/Zombies Ate My Neighbors (USA).track-0.pcm does not exist, trying another path. [INFO] [Environ]: SYSTEM_DIRECTORY: "E:\RetroArch\system". [libretro INFO] Trying to read file C:/Users/guita/AppData/Local/higan/track-0.pcm. [libretro INFO] Accessing data from 1: msu1.rom (required: no) [libretro INFO] Reading imported file: msu1.rom. [libretro INFO] Accessing data from 1: track-0.pcm (required: no) [libretro INFO] E:/RetroArch/saves/Zombies Ate My Neighbors (USA).track-0.pcm does not exist, trying another path. [INFO] [Environ]: SYSTEM_DIRECTORY: "E:\RetroArch\system". [libretro INFO] Trying to read file C:/Users/guita/AppData/Local/higan/track-0.pcm. [libretro INFO] Reported video rate: 60.0985 Hz. [INFO] [RCHEEVOS]: ext_hash 0b88a9a1 ('sfc') [INFO] [RCHEEVOS]: testing SNES (discards header) [INFO] [RCHEEVOS]: could not locate SNES header [INFO] [RCHEEVOS]: no method for file extension, trying core supported extensions: sfc|smc|gb|gbc|bml|rom [INFO] [RCHEEVOS]: testing Generic (plain content) [INFO] Skipping SRAM load.. [INFO] Version of libretro API: 1 [INFO] Compiled against API: 1 [libretro INFO] Reported video rate: 60.0985 Hz. [INFO] [Cheats]: Load game-specific cheatfile: E:\RetroArch\cheats\higan (Super Famicom Accuracy)\Zombies Ate My Neighbors (USA).cht [INFO] [RCHEEVOS]: checking 23c2af7897d9384c4791189b68c142eb [INFO] [Audio]: Set audio input rate to: 44027.74 Hz. [INFO] [Video]: Video @ 1755x1440 [INFO] [GL]: Found GL context: wgl [INFO] [GL]: Detecting screen resolution 1920x1080. [INFO] [WGL] extensions: WGL_ARB_buffer_region WGL_ARB_create_context WGL_ARB_create_context_no_error WGL_ARB_create_context_profile WGL_ARB_create_context_robustness WGL_ARB_context_flush_control WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_mult [INFO] [WGL]: Adaptive VSync supported. [INFO] [WGL]: wglSwapInterval(1) [INFO] [GL]: Vendor: NVIDIA Corporation, Renderer: GeForce RTX 2060/PCIe/SSE2. [INFO] [GL]: Version: 4.6.0 NVIDIA 445.75. [INFO] [GL]: Using ARB_sync to reduce latency. [INFO] [GL]: Using resolution 1755x1041 [INFO] [GL]: Default shader backend found: glsl. [INFO] [Shader driver]: Using GLSL shader backend. [INFO] [GLSL]: Checking GLSL shader support ... [WARN] [GL]: Stock GLSL shaders will be used. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] Setting up menu pipeline shaders for XMB ... [INFO] [GLSL]: Compiling ribbon shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling simple ribbon shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling snow shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling modern snow shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling bokeh shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GLSL]: Compiling snowflake shader.. [INFO] [GLSL]: Found GLSL vertex shader. [INFO] [GLSL]: Found GLSL fragment shader. [INFO] [GLSL]: Linking GLSL program. [INFO] [GL]: Using 4 textures. [INFO] [GL]: Loaded 1 program(s). [INFO] [XInput]: Found XInput v1.4. [INFO] [XInput]: Found controller, user #1 [INFO] [XInput]: Pads connected: 1 [INFO] [DINPUT]: Enumerating joypads ... [INFO] [DINPUT]: Device #0 PID: {02FF} VID:{045E} [INFO] [DINPUT]: Done enumerating joypads ... [INFO] [XInput]: Attempting autoconf for "XBOX One Controller (User 1)", user #0 [INFO] [DINPUT]: Found XInput pad at index 0 (DINPUT index 0) [INFO] [XInput]: Found VID/PID (045E/02FF) from DINPUT index 0 for "XBOX One Controller (User 1)", user #0 [INFO] [XInput]: Attempting autoconf for user #1 [INFO] [XInput]: Attempting autoconf for user #2 [INFO] [XInput]: Attempting autoconf for user #3 [INFO] [XInput]: Attempting autoconf for user #4 [INFO] [XInput]: Attempting autoconf for user #5 [INFO] [XInput]: Attempting autoconf for user #6 [INFO] [XInput]: Attempting autoconf for user #7 [INFO] [XInput]: Attempting autoconf for user #8 [INFO] [XInput]: Attempting autoconf for user #9 [INFO] [XInput]: Attempting autoconf for user #10 [INFO] [XInput]: Attempting autoconf for user #11 [INFO] [XInput]: Attempting autoconf for user #12 [INFO] [XInput]: Attempting autoconf for user #13 [INFO] [XInput]: Attempting autoconf for user #14 [INFO] [XInput]: Attempting autoconf for user #15 [INFO] [Joypad]: Found joypad driver: "xinput". [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Video]: Found display server: win32 [INFO] [XAudio2]: Requesting 64 ms latency, using 64 ms latency. [INFO] [Menu]: Found menu display driver: "gl". [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [RCHEEVOS]: got game id 405 [INFO] [LED]: LED driver = 'null' 0000000000B99340 [INFO] [MIDI]: Initializing ... [INFO] [MIDI]: Input disabled. [INFO] [MIDI]: Output disabled. [INFO] [MIDI]: Initialized "winmm" driver. [WARN] Input device ID 5 is unknown to this libretro implementation. Using RETRO_DEVICE_JOYPAD. [WARN] Input device ID 5 is unknown to this libretro implementation. Using RETRO_DEVICE_JOYPAD. [INFO] Loading history file: [E:\RetroArch\content_history.lpl]. [INFO] Loading history file: [E:\RetroArch\content_music_history.lpl]. [INFO] Loading history file: [E:\RetroArch\content_video_history.lpl]. [INFO] Loading history file: [E:\RetroArch\content_image_history.lpl]. [INFO] Loading favorites file: [E:\RetroArch\content_favorites.lpl]. [INFO] [GL]: VSync => on [INFO] [WGL]: wglSwapInterval(1) [INFO] [Font]: Using font rendering backend: freetype. [INFO] [Font]: Using font rendering backend: freetype. [INFO] [RCHEEVOS]: Load task finished [INFO] [Overrides] configuration overrides unloaded, original configuration restored. [INFO] [config] Saved new config to "E:\RetroArch\retroarch.cfg". [INFO] [Cheats]: Save game-specific cheatfile: E:\RetroArch\cheats\higan (Super Famicom Accuracy)\Zombies Ate My Neighbors (USA).cht [INFO] Content ran for a total of: 00 hours, 00 minutes, 05 seconds. [INFO] Saving runtime log file: E:\RetroArch\playlists\logs\higan (Super Famicom Accuracy)\Zombies Ate My Neighbors (USA).lrtl [INFO] Unloading game.. [INFO] Unloading core.. [INFO] Unloading core symbols.. [INFO] [Core Options]: Saved core options file to "E:\RetroArch\retroarch-core-options.cfg" [INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames. [INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.

warlockv2 avatar Mar 26 '20 19:03 warlockv2

I've used -compiled- recently on retropie today's github code and it worked well, you must delete retroachievement_token config on retroarch.cfg file

askotx avatar Mar 26 '20 22:03 askotx

This is still a bug. You can find years and years of steam deck users running into this problem and needing to edit their retroarch.cfg file just to get it to retry the hardcoded password.

Proof:

https://steamcommunity.com/app/1118310/discussions/0/5243919379683909908/

https://www.reddit.com/r/RetroArch/comments/kupgte/retroachievements_login_error_bug/

I have to do this every month or so just to use retroachievements, which is quite cumbersome on a device with no keyboard/mouse (steam deck). If the token is invalid, use the cheevos password to generate a new token. You have the password, you don't need to just settle for an expired token and not even prompt the user for their password again.

whatnowmax avatar Jun 18 '24 16:06 whatnowmax

If the token is invalid, use the cheevos password to generate a new token. You have the password, you don't need to just settle for an expired token and not even prompt the user for their password again.

It's a security concern to store the password in plaintext in the file, so when the user successfully logs into the RetroAchievements server, the cheevos_password setting is cleared and the cheevos_token setting is set. As long as the cheevos_token is set, it will attempt to use that to log in.

If the token is not used in 14 days, it expires and the user will receive an "invalid user/token combination" error. At that point, the user must enter their password again to generate a new token. This can be done directly in RetroArch. As soon as the user enters a password, the cheevos_token setting is cleared and the cheevos_password setting is set. If the configuration is saved at this point, you can see that. If the user proceeds to launch a game, a successful login will clear the cheevos_password and update the cheevos_token with the new value.

However, none of these changes get written to the configuration file automatically, and I suspect this problem is largely due to that behavior. Changes are only committed when the application is exited (if Settings > Configuration > Save Configuration on Quit is ONE) or if the user explicitly commits them via Main Menu > Configuration File > Save Current Configuration. So, if the token is expired, and the user doesn't do anything to commit the configuration file, the old token will be tried again the next time the application starts.

Conversely, if this is the root cause of the problem, it can also be the solution. If the configuration file contains cheevos_password, but not cheevos_token (which is a security concern - but you might be willing to accept that risk), then it will do a normal password login and update the cheevos_token value. As long as the cheevos_token value is never written to the configuration file, future logins will continue to do a password login.

On Android, RetroArch can be pushed into the background and arbitrarily terminated by the OS (neither of which results in changes to the configuration file being committed). Maybe something similar is happening on the SteamDeck? I don't have a SteamDeck, so I can't try to reproduce it myself.

The behavior works correctly on Windows with an invalid token in cheevos_token. After a failed login, I can change the password, correctly log in, and exit the application. The corrected token gets written to the configuration file.

Jamiras avatar Jun 18 '24 17:06 Jamiras

Hello @Jamiras thanks for your quick reply! I think you're probably spot on with this idea. I tried to take your advice by inputting my password fresh, then saving my configuration, but I couldn't due to ""Not saving. Overrides active." which is an extremely common setup on the steam deck due to emudeck and other auto configuration scripts that customized every single core/mapping/etc for you. Opening the retroarch.cfg manually and removing the token would of course not care about any sort of override scenario so I'd bet that your method would work as well, if it were possible on steam deck's most common setups. Even booting retroarch directly (no emulation station) has this override situation.

Saving the game/core overrides after inputting the password doesn't seem to fix the problem, but I'm pretty sure that is because the core/game overrides don't contain retroachievement credentials (not sure).

whatnowmax avatar Jun 18 '24 18:06 whatnowmax

Hello @Jamiras your method works perfectly. I started retroarch (not through emulation station) and then input my password, saved configuration (no core was loaded so no core override got in the way), and then was able to launch anything from my history and login to retroachievements! WAY better of a workaround than anything I've found online.

I'm thinking this is more of an interaction with steam deck's common configuration than any bug in retroarch inherently. Steam deck auto config scripts set up a ton of overrides for every core to make things fit better without needing to customize anything. If retroarch allowed for passwords to be saved indefinitely and then the token re-issued using the hardcoded password, that would be nice. Relying on the token would require the user log back in every two weeks (minimum, to be fair), which is pretty annoying on a device without a keyboard/mouse, but at least would avoid having to go into desktop mode and hunt down the retroarch.cfg file (PRETTY hidden on steam deck).

whatnowmax avatar Jun 18 '24 19:06 whatnowmax

@Jamiras ran into the same issue with retroarch running on xbox s so I guess it's not specific to the steam deck. My buddy just had it happen on his PC but I can't confirm that one personally. Seems to be a more widespread problem than just steam deck. Other emulators prompt for password after the token expires (pcsx2 I know does).

whatnowmax avatar Jun 25 '24 12:06 whatnowmax

Retroarch doesn't really provide any way to prompt the user to re-enter their password, so we just show the invalid user/token error message.

Even if we could somehow redirect the user to the password field at that moment, it doesn't solve the underlying issue that the new password/token isn't automatically saved.

none of these changes get written to the configuration file automatically, and I suspect this problem is largely due to that behavior. Changes are only committed when the application is exited (if Settings > Configuration > Save Configuration on Quit is ONE) or if the user explicitly commits them via Main Menu > Configuration File > Save Current Configuration. So, if the token is expired, and the user doesn't do anything to commit the configuration file, the old token will be tried again the next time the application starts.

Jamiras avatar Jun 25 '24 12:06 Jamiras

This issue has nagged me for awhile too. One way I could think of making this better is add a menu option (disabled by default) that when set will keep the user password in the config file always. A disclaimer could be added when turning this on warning the user that this will result in their password being stored insecurely. But for people who use unique passwords for every login, this could be something they'd be OK with.

Another option I could think of but don't know how hard it'd be to do, is kick off a task to login to retroarchievments as soon as the user puts in their new password via the menu. That way it should not matter if the password never gets saved since the new token could get generated right after password entry instead of waiting until you start a game.

Nargash avatar Jul 14 '24 18:07 Nargash