{"record":{"id":"11ff7a7c52253736","repo":"AlistGo/alist","slug":"failed-to-refresh-token-s-11ff7a","errorCode":null,"errorMessage":"failed to refresh token: %s","messagePattern":"failed to refresh token: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"drivers/aliyundrive_open/util.go","lineNumber":78,"sourceCode":"\t\tSetResult(&resp).\n\t\tSetError(&e).\n\t\tSetQueryParams(map[string]string{\n\t\t\t\"refresh_ui\": d.RefreshToken,\n\t\t\t\"server_use\": \"true\",\n\t\t\t\"driver_txt\": \"alicloud_qr\",\n\t\t}).\n\t\tGet(d.OauthTokenURL)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\tif resp.RefreshToken != \"\" && resp.AccessToken != \"\" {\n\t\treturn resp.RefreshToken, resp.AccessToken, nil\n\t}\n\tif resp.ErrorMessage != \"\" {\n\t\tif res != nil && res.StatusCode() == http.StatusTooManyRequests {\n\t\t\treturn d.refreshTokenWithLegacyFallback(ctx, resp.ErrorMessage, retryAfterFromResponse(res))\n\t\t}\n\t\treturn \"\", \"\", fmt.Errorf(\"failed to refresh token: %s\", resp.ErrorMessage)\n\t}\n\tif res != nil && res.StatusCode() == http.StatusTooManyRequests {\n\t\treturn d.refreshTokenWithLegacyFallback(ctx, http.StatusText(http.StatusTooManyRequests), retryAfterFromResponse(res))\n\t}\n\tif e.Code != \"\" || e.Message != \"\" {\n\t\treturn d.refreshTokenWithPost(ctx, d.OauthTokenURL)\n\t}\n\treturn \"\", \"\", fmt.Errorf(\"empty token returned from online API\")\n}\n\nfunc (d *AliyundriveOpen) refreshTokenWithLegacyFallback(ctx context.Context, message string, retryAfter time.Duration) (string, string, error) {\n\tif d.OauthTokenURL != legacyOauthTokenURL {\n\t\tlog.Warnf(\"[ali_open] online refresh API is rate-limited, trying legacy fallback: %s\", legacyOauthTokenURL)\n\t\tif refresh, access, err := d.refreshTokenWithPost(ctx, legacyOauthTokenURL); err == nil {\n\t\t\treturn refresh, access, nil\n\t\t} else if _, ok := err.(*refreshRateLimitError); !ok {\n\t\t\treturn \"\", \"\", err\n\t\t}","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/AlistGo/alist/blob/843d9dc8149126976b2625911e45a4d3ffd6f2f5/drivers/aliyundrive_open/util.go#L60-L96","documentation":"Error \"failed to refresh token: %s\" thrown in AlistGo/alist.","triggerScenarios":"Thrown at drivers/aliyundrive_open/util.go:78 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"843d9dc8149126976b2625911e45a4d3ffd6f2f5","analyzedAt":"2026-08-15T12:14:11.722Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}