tdryer / hangups

the first third-party instant messaging client for Google Hangouts
https://hangups.readthedocs.io/
MIT License
1.71k stars 189 forks source link

Docker: Login failed (Failed to find form '#gaia_loginform' in page) #497

Closed stephenwithav closed 4 years ago

stephenwithav commented 4 years ago

After entering my login info, the container returns the error in the title.

The pip version does, too.

stephenwithav commented 4 years ago

--manual-login makes it work.

roitk commented 4 years ago

I can't login with hangoutsbot anymore due to the #gaia_loginform problem. That bot doesn't have a --manual-login option as far as I can tell. Is there any way the root of this issue can be addressed so that software depending on this auth flow can function again?

EDIT: From hangoutsbot:

21:05:17 ERROR root: LOGIN FAILED
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/hangups/auth.py", line 198, in get_auth
    raise GoogleAuthError("Refresh token not found")
hangups.auth.GoogleAuthError: Refresh token not found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/hangups/auth.py", line 272, in submit_form
    form = self._page.soup.select(form_selector)[0]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/rohit/discord-hangouts-bridge/hangupsbot/hangupsbot.py", line 139, in login
    cookies = hangups.auth.get_auth_stdin(cookies_path)
  File "/usr/local/lib/python3.6/dist-packages/hangups/auth.py", line 234, in get_auth_stdin
    CredentialsPrompt(), refresh_token_cache, manual_login=manual_login
  File "/usr/local/lib/python3.6/dist-packages/hangups/auth.py", line 209, in get_auth
    session, credentials_prompt
  File "/usr/local/lib/python3.6/dist-packages/hangups/auth.py", line 321, in _get_authorization_code
    browser.submit_form(FORM_SELECTOR, {PASSWORD_SELECTOR: password})
  File "/usr/local/lib/python3.6/dist-packages/hangups/auth.py", line 275, in submit_form
    'Failed to find form {!r} in page'.format(form_selector)
hangups.auth.GoogleAuthError: Failed to find form '#gaia_loginform' in page
21:05:17 ERROR root: Valid login required, exiting
Terrance commented 4 years ago

You can login once with hangups using manual login, then copy the auth token (~/.cache/hangups/refresh_token.txt) to hangoutsbot (~/.local/share/hangoutsbot/cookies.json).