@@ -631,18 +631,18 @@ Service_.prototype.parseToken_ = function(content) {
631
631
} else {
632
632
throw new Error ( 'Unknown token format: ' + this . tokenFormat_ ) ;
633
633
}
634
- this . setExpiresAt_ ( token ) ;
634
+ this . ensureExpiresAtSet_ ( token ) ;
635
635
return token ;
636
636
} ;
637
637
638
638
/**
639
- * Adds expiresAt annotations on the token.
639
+ * Adds expiresAt annotations on the token if not set .
640
640
* @param {string } token A token.
641
641
* @private
642
642
*/
643
- Service_ . prototype . setExpiresAt_ = function ( token ) {
643
+ Service_ . prototype . ensureExpiresAtSet_ = function ( token ) {
644
644
// handle prior migrations
645
- if ( token . expiresAt ) {
645
+ if ( token . expiresAt !== undefined ) {
646
646
return ;
647
647
}
648
648
@@ -686,8 +686,9 @@ Service_.prototype.refresh = function() {
686
686
if ( ! newToken . refresh_token ) {
687
687
newToken . refresh_token = token . refresh_token ;
688
688
}
689
- this . setExpiresAt_ ( token ) ;
690
- if ( token . refreshTokenExpiresAt ) {
689
+ this . ensureExpiresAtSet_ ( token ) ;
690
+ // Propagate refresh token expiry if new token omits it
691
+ if ( newToken . refreshTokenExpiresAt === undefined ) {
691
692
newToken . refreshTokenExpiresAt = token . refreshTokenExpiresAt ;
692
693
}
693
694
this . saveToken_ ( newToken ) ;
@@ -776,8 +777,8 @@ Service_.prototype.isExpired_ = function(token) {
776
777
*/
777
778
Service_ . prototype . canRefresh_ = function ( token ) {
778
779
if ( ! token . refresh_token ) return false ;
779
- this . setExpiresAt_ ( token ) ;
780
- if ( ! token . refreshTokenExpiresAt ) {
780
+ this . ensureExpiresAtSet_ ( token ) ;
781
+ if ( token . refreshTokenExpiresAt === undefined ) {
781
782
return true ;
782
783
} else {
783
784
var now = getTimeInSeconds_ ( new Date ( ) ) ;
0 commit comments