+func (c *Client) revokeToken(ctx context.Context) error {
+ tok, err := c.appUser.Token(ctx, "Google")
+ if err != nil {
+ return err
+ }
+
+ httpClient := urlfetch.Client(ctx)
+ httpClient.Transport = retry.NewTransport(httpClient.Transport)
+
+ url := "https://accounts.google.com/o/oauth2/revoke?token=" + url.QueryEscape(tok.AccessToken)
+ res, err := httpClient.Get(url)
+ if err != nil {
+ return fmt.Errorf("GET %s: %v", url, err)
+ }
+ defer res.Body.Close()
+
+ if res.StatusCode != http.StatusOK {
+ if data, err := ioutil.ReadAll(res.Body); err == nil {
+ return fmt.Errorf("GET %s: %s", url, data)
+ } else {
+ return fmt.Errorf("GET %s: %s", url, res.Status)
+ }
+ }
+
+ return nil
+}
+