AlistGo/alist · error
failed to refresh token: refresh token is empty, resp: %s
Error message
failed to refresh token: refresh token is empty, resp: %s
What it means
Error "failed to refresh token: refresh token is empty, resp: %s" thrown in AlistGo/alist.
Source
Thrown at drivers/aliyundrive_open/util.go:140
return "", "", err
}
log.Debugf("[ali_open] refresh token response: %s", res.String())
if res.StatusCode() == http.StatusTooManyRequests {
message := e.Message
if message == "" {
message = http.StatusText(http.StatusTooManyRequests)
}
return "", "", &refreshRateLimitError{
message: fmt.Sprintf("failed to refresh token: %s", message),
retryAfter: retryAfterFromResponse(res),
}
}
if e.Code != "" {
return "", "", fmt.Errorf("failed to refresh token: %s", e.Message)
}
refresh, access := utils.Json.Get(res.Body(), "refresh_token").ToString(), utils.Json.Get(res.Body(), "access_token").ToString()
if refresh == "" {
return "", "", fmt.Errorf("failed to refresh token: refresh token is empty, resp: %s", res.String())
}
curSub, err := getSub(d.RefreshToken)
if err != nil {
return "", "", err
}
newSub, err := getSub(refresh)
if err != nil {
return "", "", err
}
if curSub != newSub {
return "", "", errors.New("failed to refresh token: sub not match")
}
return refresh, access, nil
}
func getSub(token string) (string, error) {
segments := strings.Split(token, ".")
if len(segments) != 3 {View on GitHub (pinned to 843d9dc814)
Solutions
- Re-authenticate the storage: obtain a new refresh_token via the provider's OAuth flow and update the storage configuration.
- Verify client_id/client_secret are correct and the refresh token has not been revoked or expired.
When it happens
Trigger: Thrown at drivers/aliyundrive_open/util.go:140 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15).
Data as JSON: /api/errors/aec91c52f9f740b8.
Report an issue: GitHub.