Tencent/WeKnora · error
invalid user ID in token
Error message
invalid user ID in token
What it means
Raised in RefreshToken when the JWT claims map lacks a string user_id — the refresh token parsed and signed correctly but its payload is malformed or was minted without the expected claim. Auth-flow guard; treat as an invalid token.
Source
Thrown at internal/application/service/user.go:1341
})
if err != nil || !token.Valid {
return "", "", errors.New("invalid refresh token")
}
claims, ok := token.Claims.(jwt.MapClaims)
if !ok {
return "", "", errors.New("invalid token claims")
}
tokenType, ok := claims["type"].(string)
if !ok || tokenType != "refresh" {
return "", "", errors.New("not a refresh token")
}
userID, ok := claims["user_id"].(string)
if !ok {
return "", "", errors.New("invalid user ID in token")
}
// Check if token is revoked
tokenRecord, err := s.tokenRepo.GetTokenByValue(ctx, refreshTokenString)
if err != nil || tokenRecord == nil || tokenRecord.IsRevoked {
return "", "", errors.New("refresh token is revoked")
}
if tokenRecord.TokenType != "refresh_token" {
return "", "", errors.New("not a refresh token")
}
// Get user
user, err := s.userRepo.GetUserByID(ctx, userID)
if err != nil {
return "", "", err
}
// Revoke old refresh tokenView on GitHub (pinned to 988cbb0330)
Solutions
- Reject the token (401) and force a fresh login
- Check token-issuing code so refresh tokens always carry user_id
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at internal/application/service/user.go:1341 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/002fcb8b2c4a51b0.
Report an issue: GitHub.