Package app: Check all fields of the OAuth token for equality.
authorFlorian Forster <ff@octo.it>
Mon, 22 Jan 2018 08:01:19 +0000 (09:01 +0100)
committerFlorian Forster <ff@octo.it>
Mon, 22 Jan 2018 08:01:19 +0000 (09:01 +0100)
It appears that refresh tokens don't always change. Check the AccessToken
field, too, and the rest of the struct for completeness sake.

app/user.go

index 1215653..d5b8452 100644 (file)
@@ -121,7 +121,10 @@ func (s *persistingTokenSource) Token() (*oauth2.Token, error) {
                return nil, err
        }
 
-       if s.t.RefreshToken != tok.RefreshToken {
+       if s.t.AccessToken != tok.AccessToken ||
+               s.t.TokenType != tok.TokenType ||
+               s.t.RefreshToken != tok.RefreshToken ||
+               !s.t.Expiry.Equal(tok.Expiry) {
                if _, err := datastore.Put(s.ctx, s.key, tok); err != nil {
                        log.Errorf(s.ctx, "persisting OAuth token in datastore failed: %v", err)
                }