steam icon indicating copy to clipboard operation
steam copied to clipboard

[BUG]Can't login on latest version

Open Left024 opened this issue 3 years ago • 10 comments

Description Can't login on latest version

Steps to Reproduce the behavior My repo to save steam game saves automatically: https://github.com/Left024/GameSaves You can see all the codes

Expected behavior client should login and no error print to console

Screenshots image

Versions Report

python -m steam.versions_report (Run python -m steam.versions_report and paste the output below)
steam: 1.4.4

Dependencies:
                 vdf: 3.4
            protobuf: 3.20.3
            requests: 2.28.1
          cachetools: 5.2.0
              gevent: 22.10.2
 gevent-eventemitter: 2.1
       pycryptodomex: 3.16.0
              enum34: Not Installed
       win-inet-pton: Not Installed

Python runtime:
          executable: /opt/hostedtoolcache/Python/3.10.9/x64/bin/python3
             version: 3.10.9 (main, Dec  7 2022, 08:16:13) [GCC 11.3.0]
            platform: linux

System info:
              system: Linux
             machine: x86_64
             release: 5.[15](https://github.com/Left024/GameSaves/actions/runs/3762787975/jobs/6395795156#step:5:16).0-1024-azure
             version: #30-Ubuntu SMP Wed Nov [16](https://github.com/Left024/GameSaves/actions/runs/3762787975/jobs/6395795156#step:5:17) 23:37:59 UTC [20](https://github.com/Left024/GameSaves/actions/runs/3762787975/jobs/6395795156#step:5:21)[22](https://github.com/Left024/GameSaves/actions/runs/3762787975/jobs/6395795156#step:5:23)

Left024 avatar Dec 23 '22 02:12 Left024

Version 1.4.3 also affected

steam: 1.4.3

Dependencies:
                 vdf: 3.4
            protobuf: Not Installed
            requests: 2.25.1
          cachetools: 5.2.0
              gevent: Not Installed
 gevent-eventemitter: Not Installed
       pycryptodomex: 3.15.0
              enum34: Not Installed
       win-inet-pton: Not Installed

Python runtime:
          executable: /usr/bin/python3
             version: 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]
            platform: linux

System info:
              system: Linux
             machine: x86_64
             release: 5.15.0-1019-aws
             version: #23-Ubuntu SMP Wed Aug 17 18:33:13 UTC 2022

jethro1412 avatar Dec 23 '22 18:12 jethro1412

Same for me using WebAuth

/usr/lib/python3.8/json/decoder.py in raw_decode(self, s, idx) 353 obj, end = self.scan_once(s, idx) 354 except StopIteration as err: --> 355 raise JSONDecodeError("Expecting value", s, err.value) from None 356 return obj, end

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Marcelzocker999 avatar Dec 23 '22 20:12 Marcelzocker999

I think the easiest fix for this ATM is to change the post to a get request and switch to using params instead of data, that seems to work for me

Gobot1234 avatar Dec 23 '22 22:12 Gobot1234

Fixed it by replacing WebAuth with login as Steam Client, but it's cookies expires fast, like 3-4 mins for me, so added relogin() func every time it did

UPD: noticed that relogin isn't refresh cookies, so it needs full relog using login() or cli_login(), that causes some bad feeling because of 2FA codes. Waiting for fix or another suggestions what to do Mabye somebody knows how to login using shared_secred code or steamguard file?

Marcelzocker999 avatar Dec 23 '22 23:12 Marcelzocker999

Same issue with me, I think Steam is trying to reduce bot recently. I check reciving message from WebAuth post to "https://steamcommunity.com/login/dologin/", and got "429 Too Many Requests". So json parser can't work properly.

Mije36 avatar Dec 24 '22 00:12 Mije36

It is entirely possible that Steam are just phasing out this endpoint considering AFAIK it's not used by official code anymore

Gobot1234 avatar Dec 24 '22 00:12 Gobot1234

Can't replicate the OPs error, I get the correct data from the RSA, but login responds with 429. My guess is that they've decomissioned the old login flow. This mean I have to investigate the new one, and see how that works.

Fixed it by replacing WebAuth with login as Steam Client, but it's cookies expires fast, like 3-4 mins for me, so added relogin() func every time it did

That web sessions is bound the the steam client session, which I'm guessing you didn't keep alive, thus it timed out and both were expired. Calling client.idle() every minute or so, should be sufficient to keep it alive.

rossengeorgiev avatar Dec 24 '22 09:12 rossengeorgiev

Can't replicate the OPs error, I get the correct data from the RSA, but login responds with 429. My guess is that they've decomissioned the old login flow. This mean I have to investigate the new one, and see how that works.

Fixed it by replacing WebAuth with login as Steam Client, but it's cookies expires fast, like 3-4 mins for me, so added relogin() func every time it did

That web sessions is bound the the steam client session, which I'm guessing you didn't keep alive, thus it timed out and both were expired. Calling client.idle() every minute or so, should be sufficient to keep it alive.

Seems like client.idle() worked for me, but anyway i'll wait for new webauth, because it is more suitable for my project. Btw, can you explain what does actually idle() does?

Marcelzocker999 avatar Dec 25 '22 00:12 Marcelzocker999

Btw, can you explain what does actually idle() does?

SteamClient uses gevent for cooperative multasking, you need to yield to the event loop so other tasks can be processed, such as sending/receiving messages, client heartbeat, etc.

rossengeorgiev avatar Dec 25 '22 10:12 rossengeorgiev

idle()

So is it like RunCallbacks in the original SDK/API?

Kein avatar Jan 10 '23 17:01 Kein