diff --git a/backend/jottacloud/jottacloud.go b/backend/jottacloud/jottacloud.go index 5998a04a2..735b5181f 100644 --- a/backend/jottacloud/jottacloud.go +++ b/backend/jottacloud/jottacloud.go @@ -152,7 +152,7 @@ func Config(ctx context.Context, name string, m configmap.Mapper, config fs.Conf m.Set(configClientSecret, "") srv := rest.NewClient(fshttp.NewClient(ctx)) - token, tokenEndpoint, username, err := doTokenAuth(ctx, srv, loginToken) + token, tokenEndpoint, err := doTokenAuth(ctx, srv, loginToken) if err != nil { return nil, fmt.Errorf("failed to get oauth token: %w", err) } @@ -161,7 +161,6 @@ func Config(ctx context.Context, name string, m configmap.Mapper, config fs.Conf if err != nil { return nil, fmt.Errorf("error while saving token: %w", err) } - m.Set(configUsername, username) return fs.ConfigGoto("choose_device") case "legacy": // configure a jottacloud backend using legacy authentication m.Set("configVersion", fmt.Sprint(legacyConfigVersion)) @@ -272,30 +271,22 @@ sync or the backup section, for example, you must choose yes.`) if config.Result != "true" { m.Set(configDevice, "") m.Set(configMountpoint, "") - } - username, userOk := m.Get(configUsername) - if userOk && config.Result != "true" { return fs.ConfigGoto("end") } oAuthClient, _, err := getOAuthClient(ctx, name, m) if err != nil { return nil, err } - if !userOk { - apiSrv := rest.NewClient(oAuthClient).SetRoot(apiURL) - cust, err := getCustomerInfo(ctx, apiSrv) - if err != nil { - return nil, err - } - username = cust.Username - m.Set(configUsername, username) - if config.Result != "true" { - return fs.ConfigGoto("end") - } - } - jfsSrv := rest.NewClient(oAuthClient).SetRoot(jfsURL) - acc, err := getDriveInfo(ctx, jfsSrv, username) + apiSrv := rest.NewClient(oAuthClient).SetRoot(apiURL) + + cust, err := getCustomerInfo(ctx, apiSrv) + if err != nil { + return nil, err + } + m.Set(configUsername, cust.Username) + + acc, err := getDriveInfo(ctx, jfsSrv, cust.Username) if err != nil { return nil, err } @@ -591,10 +582,10 @@ func doLegacyAuth(ctx context.Context, srv *rest.Client, oauthConfig *oauth2.Con } // doTokenAuth runs the actual token request for V2 authentication -func doTokenAuth(ctx context.Context, apiSrv *rest.Client, loginTokenBase64 string) (token oauth2.Token, tokenEndpoint string, username string, err error) { +func doTokenAuth(ctx context.Context, apiSrv *rest.Client, loginTokenBase64 string) (token oauth2.Token, tokenEndpoint string, err error) { loginTokenBytes, err := base64.RawURLEncoding.DecodeString(loginTokenBase64) if err != nil { - return token, "", "", err + return token, "", err } // decode login token @@ -602,7 +593,7 @@ func doTokenAuth(ctx context.Context, apiSrv *rest.Client, loginTokenBase64 stri decoder := json.NewDecoder(bytes.NewReader(loginTokenBytes)) err = decoder.Decode(&loginToken) if err != nil { - return token, "", "", err + return token, "", err } // retrieve endpoint urls @@ -613,7 +604,7 @@ func doTokenAuth(ctx context.Context, apiSrv *rest.Client, loginTokenBase64 stri var wellKnown api.WellKnown _, err = apiSrv.CallJSON(ctx, &opts, nil, &wellKnown) if err != nil { - return token, "", "", err + return token, "", err } // prepare out token request with username and password @@ -635,14 +626,14 @@ func doTokenAuth(ctx context.Context, apiSrv *rest.Client, loginTokenBase64 stri var jsonToken api.TokenJSON _, err = apiSrv.CallJSON(ctx, &opts, nil, &jsonToken) if err != nil { - return token, "", "", err + return token, "", err } token.AccessToken = jsonToken.AccessToken token.RefreshToken = jsonToken.RefreshToken token.TokenType = jsonToken.TokenType token.Expiry = time.Now().Add(time.Duration(jsonToken.ExpiresIn) * time.Second) - return token, wellKnown.TokenEndpoint, loginToken.Username, err + return token, wellKnown.TokenEndpoint, err } // getCustomerInfo queries general information about the account @@ -944,17 +935,11 @@ func NewFs(ctx context.Context, name, root string, m configmap.Mapper) (fs.Fs, e return err }) - user, userOk := m.Get(configUsername) - if userOk { - f.user = user - } else { - fs.Infof(nil, "Username not found in config and must be looked up, reconfigure to avoid the extra request") - cust, err := getCustomerInfo(ctx, f.apiSrv) - if err != nil { - return nil, err - } - f.user = cust.Username + cust, err := getCustomerInfo(ctx, f.apiSrv) + if err != nil { + return nil, err } + f.user = cust.Username f.setEndpoints() if root != "" && !rootIsDir {