X-Git-Url: https://git.octo.it/?p=kraftakt.git;a=blobdiff_plain;f=fitbit%2Ffitbit.go;h=81d4ebc95dfb80fe9eb3945df7fc85e8a7916eb3;hp=bdfc3ddc9b8068f40dc9e27d397c96297be898a2;hb=62a15962f1a331a998b6fe6b724b814490be5fe4;hpb=6e353fc58f08533be15182536e7b0c5099c098b8 diff --git a/fitbit/fitbit.go b/fitbit/fitbit.go index bdfc3dd..81d4ebc 100644 --- a/fitbit/fitbit.go +++ b/fitbit/fitbit.go @@ -127,36 +127,15 @@ func NewClient(ctx context.Context, fitbitUserID string, u *app.User) (*Client, fitbitUserID = "-" } - storedToken, err := u.Token(ctx, "Fitbit") + c, err := u.OAuthClient(ctx, "Fitbit", oauth2Config) if err != nil { return nil, err } - // The oauth2 package will refresh the token when it is valid for less - // than 10 seconds. To avoid a race with later calls (which would - // refresh the token but the new RefreshToken wouldn't make it back - // into datastore), we refresh earlier than that. The Fitbit tokens are - // quite long-lived (six hours?); the additional load this puts on the - // backends is negligible. - if storedToken.Expiry.Round(0).Add(-5 * time.Minute).Before(time.Now()) { - storedToken.Expiry = time.Now() - } - - refreshedToken, err := oauth2Config.TokenSource(ctx, storedToken).Token() - if err != nil { - return nil, err - } - - if refreshedToken.RefreshToken != storedToken.RefreshToken { - if err := u.SetToken(ctx, "Fitbit", refreshedToken); err != nil { - return nil, err - } - } - return &Client{ fitbitUserID: fitbitUserID, appUser: u, - client: oauth2Config.Client(ctx, refreshedToken), + client: c, }, nil }