From 06b375def996118c70d5dd9625f5b1b7b86ffc17 Mon Sep 17 00:00:00 2001 From: andig Date: Tue, 7 Oct 2025 10:27:22 +0200 Subject: [PATCH] chore: log token validity --- vehicle/bmw/cardata/mqtt.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/vehicle/bmw/cardata/mqtt.go b/vehicle/bmw/cardata/mqtt.go index 194fb9766..6012b1e08 100644 --- a/vehicle/bmw/cardata/mqtt.go +++ b/vehicle/bmw/cardata/mqtt.go @@ -11,6 +11,7 @@ import ( "github.com/cenkalti/backoff/v4" mqtt "github.com/eclipse/paho.mqtt.golang" "github.com/evcc-io/evcc/util" + "github.com/golang-jwt/jwt/v5" "golang.org/x/oauth2" ) @@ -82,7 +83,14 @@ func (v *MqttConnector) runMqtt(ctx context.Context, token *oauth2.Token) error gcid := TokenExtra(token, "gcid") idToken := TokenExtra(token, "id_token") - v.log.DEBUG.Printf("connect streaming (using gcid %s/ id %s, valid until: %v)", gcid, idToken, token.Expiry.Round(time.Second)) + var claims jwt.RegisteredClaims + parsed, err := jwt.ParseWithClaims(idToken, &claims, nil) + if err != nil && !errors.Is(err, jwt.ErrTokenUnverifiable) { + return fmt.Errorf("get %w for %s", err, idToken) + } + idExpiry, _ := parsed.Claims.GetExpirationTime() + + v.log.DEBUG.Printf("connect streaming (using gcid %s/ id_token %s, IDT valid: %v, AT valid: %v)", gcid, idToken, idExpiry.Round(time.Second), token.Expiry.Round(time.Second)) paho := mqtt.NewClient( mqtt.NewClientOptions().