From de1fb86df76dfa95a028542b4722b164e8b3fdd4 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 7 Feb 2024 11:06:12 +0100 Subject: [PATCH] Tesla Command: make sure token is refreshed at least once (#12121) --- vehicle/tesla-vehicle-command/identity.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/vehicle/tesla-vehicle-command/identity.go b/vehicle/tesla-vehicle-command/identity.go index c2d0073c2..8878e2623 100644 --- a/vehicle/tesla-vehicle-command/identity.go +++ b/vehicle/tesla-vehicle-command/identity.go @@ -76,15 +76,22 @@ func NewIdentity(log *util.Logger, token *oauth2.Token) (*Identity, error) { // database token if !token.Valid() { - if err := settings.Json(v.settingsKey(), &token); err != nil { - return nil, fmt.Errorf("missing token setting for %s: %w", claims.Subject, err) + var tok oauth2.Token + if err := settings.Json(v.settingsKey(), &tok); err == nil { + token = &tok } + } - if !token.Valid() { - return nil, errors.New("token expired") + if !token.Valid() && token.RefreshToken != "" { + if tok, err := v.RefreshToken(token); err == nil { + token = tok } } + if !token.Valid() { + return nil, errors.New("token expired") + } + // acct, err := account.New(token.AccessToken, userAgent) // if err != nil { // return nil, err