Skip to content

Commit c7d677f

Browse files
committed
refac _find_any_credentials to tuple for legacy mode refresh fix
1 parent 885a413 commit c7d677f

1 file changed

Lines changed: 14 additions & 20 deletions

File tree

auth/google_auth.py

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,14 @@ def get_default_credentials_dir():
9393

9494
def _find_any_credentials(
9595
base_dir: str = DEFAULT_CREDENTIALS_DIR,
96-
) -> Optional[Credentials]:
96+
) -> tuple[Optional[Credentials], Optional[str]]:
9797
"""
9898
Find and load any valid credentials from the credentials directory.
9999
Used in single-user mode to bypass session-to-OAuth mapping.
100100
101101
Returns:
102-
First valid Credentials object found, or None if none exist.
102+
Tuple of (Credentials, user_email) or (None, None) if none exist.
103+
Returns the user email to enable saving refreshed credentials.
103104
"""
104105
try:
105106
store = get_credential_store()
@@ -108,7 +109,7 @@ def _find_any_credentials(
108109
logger.info(
109110
"[single-user] No users found with credentials via credential store"
110111
)
111-
return None
112+
return None, None
112113

113114
# Return credentials for the first user found
114115
first_user = users[0]
@@ -117,7 +118,7 @@ def _find_any_credentials(
117118
logger.info(
118119
f"[single-user] Found credentials for {first_user} via credential store"
119120
)
120-
return credentials
121+
return credentials, first_user
121122
else:
122123
logger.warning(
123124
f"[single-user] Could not load credentials for {first_user} via credential store"
@@ -129,7 +130,7 @@ def _find_any_credentials(
129130
)
130131

131132
logger.info("[single-user] No valid credentials found via credential store")
132-
return None
133+
return None, None
133134

134135

135136
def save_credentials_to_session(session_id: str, credentials: Credentials):
@@ -620,27 +621,20 @@ def get_credentials(
620621
logger.info(
621622
"[get_credentials] Single-user mode: bypassing session mapping, finding any credentials"
622623
)
623-
credentials = _find_any_credentials(credentials_base_dir)
624+
credentials, found_user_email = _find_any_credentials(credentials_base_dir)
624625
if not credentials:
625626
logger.info(
626627
f"[get_credentials] Single-user mode: No credentials found in {credentials_base_dir}"
627628
)
628629
return None
629630

630-
# In single-user mode, if user_google_email wasn't provided, try to get it from user info
631-
# This is needed for proper credential saving after refresh
632-
if not user_google_email and credentials.valid:
633-
try:
634-
user_info = get_user_info(credentials)
635-
if user_info and "email" in user_info:
636-
user_google_email = user_info["email"]
637-
logger.debug(
638-
f"[get_credentials] Single-user mode: extracted user email {user_google_email} from credentials"
639-
)
640-
except Exception as e:
641-
logger.debug(
642-
f"[get_credentials] Single-user mode: could not extract user email: {e}"
643-
)
631+
# Use the email from the credential file if not provided
632+
# This ensures we can save refreshed credentials even when the token is expired
633+
if not user_google_email and found_user_email:
634+
user_google_email = found_user_email
635+
logger.debug(
636+
f"[get_credentials] Single-user mode: using email {user_google_email} from credential file"
637+
)
644638
else:
645639
credentials: Optional[Credentials] = None
646640

0 commit comments

Comments
 (0)