diff --git a/cmder/cmder_helper.go b/cmder/cmder_helper.go index 7e27016..f1fe128 100644 --- a/cmder/cmder_helper.go +++ b/cmder/cmder_helper.go @@ -6,6 +6,7 @@ import ( "github.com/tickstep/aliyunpan-api/aliyunpan/apierror" "github.com/tickstep/aliyunpan/cmder/cmdliner" "github.com/tickstep/aliyunpan/internal/config" + "github.com/tickstep/aliyunpan/internal/functions/panlogin" "github.com/tickstep/library-go/logger" "github.com/urfave/cli" "sync" @@ -75,7 +76,29 @@ func TryLogin() *config.PanUser { // login _, webToken, err := DoLoginHelper(u.RefreshToken) if err != nil { - logger.Verboseln("automatically login error") + logger.Verboseln("automatically login use saved refresh token error ", err) + if u.TokenId != "" { + logger.Verboseln("try to login use tokenId") + h := panlogin.NewLoginHelper(config.DefaultTokenServiceWebHost) + r, e := h.GetRefreshToken(u.TokenId) + if e != nil { + logger.Verboseln("try to login use tokenId error", e) + break + } + refreshToken, e := h.ParseSecureRefreshToken("", r.SecureRefreshToken) + if e != nil { + logger.Verboseln("try to parse refresh token error", e) + break + } + _, webToken, err = DoLoginHelper(refreshToken) + if err != nil { + logger.Verboseln("try to use refresh token from tokenId error", e) + break + } + fmt.Println("Token重新自动登录成功") + // save new refresh token + u.RefreshToken = refreshToken + } break } // success @@ -89,4 +112,4 @@ func TryLogin() *config.PanUser { } } return nil -} \ No newline at end of file +} diff --git a/internal/command/login.go b/internal/command/login.go index 53e5913..27c4b2d 100644 --- a/internal/command/login.go +++ b/internal/command/login.go @@ -133,7 +133,7 @@ func CmdLogout() cli.Command { func RunLogin(useQrCodeLogin bool, refreshToken string) (tokenId, refreshTokenStr string, webToken aliyunpan.WebLoginToken, error error) { if useQrCodeLogin { - h := panlogin.NewLoginHelper("http://localhost:8977") + h := panlogin.NewLoginHelper(config.DefaultTokenServiceWebHost) qrCodeUrlResult, err := h.GetQRCodeLoginUrl("") if err != nil { fmt.Println("二维码登录错误:", err) diff --git a/internal/config/pan_config.go b/internal/config/pan_config.go index 4646dda..face7ac 100644 --- a/internal/config/pan_config.go +++ b/internal/config/pan_config.go @@ -39,11 +39,15 @@ const ( // ConfigVersion 配置文件版本 ConfigVersion string = "1.0" - // DefaultUploadParallelNum 默认的文件上传并发数量 + // DefaultFileUploadParallelNum 默认的文件上传并发数量 DefaultFileUploadParallelNum = 10 // DefaultFileDownloadParallelNum 默认的文件下载并发数量 DefaultFileDownloadParallelNum = 5 + + // DefaultTokenServiceWebHost 默认的token服务 + DefaultTokenServiceWebHost = "http://api.tickstep.com" + //DefaultTokenServiceWebHost = "http://localhost:8977" ) var ( @@ -75,7 +79,7 @@ type PanConfig struct { MaxDownloadRate int64 `json:"maxDownloadRate"` // 限制最大下载速度,单位 B/s, 即字节/每秒 MaxUploadRate int64 `json:"maxUploadRate"` // 限制最大上传速度,单位 B/s, 即字节/每秒 - TransferUrlType int `json:"transferUrlType"` // 上传/下载URL类别,1-默认,2-阿里云ECS + TransferUrlType int `json:"transferUrlType"` // 上传/下载URL类别,1-默认,2-阿里云ECS SaveDir string `json:"saveDir"` // 下载储存路径 @@ -282,7 +286,7 @@ func GetConfigDir() string { // 3. ~/.aliyunpan/ if runtime.GOOS == "linux" || runtime.GOOS == "windows" { - cd,er := homedir.Expand("~/.aliyunpan") + cd, er := homedir.Expand("~/.aliyunpan") if er == nil { if IsFolderExist(cd) { logger.Verboseln("use config dir: ", cd) @@ -417,4 +421,4 @@ func (c *PanConfig) HTTPClient(ua string) *requester.HTTPClient { client.SetUserAgent(ua) } return client -} \ No newline at end of file +} diff --git a/internal/functions/panlogin/login_helper.go b/internal/functions/panlogin/login_helper.go index 0481aa4..131c0cf 100644 --- a/internal/functions/panlogin/login_helper.go +++ b/internal/functions/panlogin/login_helper.go @@ -41,9 +41,6 @@ type QRCodeLoginResult struct { } func NewLoginHelper(webHost string) *LoginHelper { - if webHost == "" { - webHost = "http://api.tickstep.com" - } return &LoginHelper{ webHost: webHost, }