VW: fix token refresh (#25642)

Co-authored-by: andig <cpuidle@gmail.com>
This commit is contained in:
Oliver Rahner 2025-11-27 18:29:26 +01:00 • committed by GitHub
parent 0fc867cae4
commit 8fb8cee72d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 23 additions and 6 deletions

View file

@ -4,4 +4,5 @@ const (
BaseURL = "https://emea.bff.cariad.digital"
AndroidPackageName = "com.volkswagen.weconnect"
UserAgent = "Volkswagen/3.51.1-android/14"
ClientID = "a24fba63-34b3-4d43-b181-942111e6bda8@apps_vw-dilab_com"
)

View file

@ -3,6 +3,7 @@ package loginapps
import (
"net/http"
"net/url"
"strings"
"github.com/evcc-io/evcc/util"
"github.com/evcc-io/evcc/util/oauth"
@ -52,17 +53,32 @@ func (v *Service) Exchange(q url.Values) (*Token, error) {
}
func (v *Service) Refresh(token *Token) (*Token, error) {
req, err := request.New(http.MethodGet, Endpoint.TokenURL, nil, map[string]string{
"Accept": "application/json",
"Authorization": "Bearer " + token.RefreshToken,
})
body := url.Values{
"grant_type": []string{"refresh_token"},
"refresh_token": []string{token.RefreshToken},
"client_id": []string{cariad.ClientID},
}
var res Token
req, err := request.New(
http.MethodPost,
cariad.BaseURL+"/login/v1/idk/token",
strings.NewReader(body.Encode()),
request.URLEncoding,
map[string]string{
"Connection": "keep-alive",
"User-Agent": cariad.UserAgent,
"Accept": "application/json",
"x-android-package-name": cariad.AndroidPackageName,
},
)
var res oauth2.Token
if err == nil {
err = v.DoJSON(req, &res)
}
return &res, err
t := Token(res)
return &t, err
}
// RefreshToken implements oauth.TokenRefresher