Skip to content

Commit 0886cd9

Browse files
authored
Merge pull request #24 from imbue-ai/hynek/do-not-lose-refresh-tokens
Preserve Google refresh token during access token refresh.
2 parents 42907cb + cf6013d commit 0886cd9

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

src/oauthUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { LoginCancelledError, LoginFailedError } from './services/base.js';
88

99
export interface OAuthTokenResponse {
1010
access_token: string;
11-
refresh_token: string;
11+
refresh_token?: string;
1212
expires_in: number;
1313
token_type: string;
1414
}

src/services/google.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,8 @@ class GoogleServiceSession extends BrowserFollowupServiceSession {
417417
// Google refresh tokens typically don't expire, so we don't set refreshTokenExpiresAt
418418
return {
419419
accessToken: tokens.access_token,
420-
refreshToken: tokens.refresh_token,
420+
// exchangeCodeForTokens() guarantees refresh_token is present
421+
refreshToken: tokens.refresh_token!,
421422
accessTokenExpiresAt,
422423
};
423424
} catch (error: unknown) {
@@ -482,7 +483,7 @@ export class Google extends Service {
482483
apiCredentials.clientId,
483484
apiCredentials.clientSecret,
484485
tokens.access_token,
485-
tokens.refresh_token,
486+
tokens.refresh_token ?? apiCredentials.refreshToken,
486487
accessTokenExpiresAt,
487488
apiCredentials.refreshTokenExpiresAt
488489
)

0 commit comments

Comments
 (0)