docs: def refresh_token(self):
          """Refresh an OAuth token given a refresh token."""
          if (not self.auth_details or
                  not 'refresh_token' in self.auth_details or
                  not self.auth_details['refresh_token']):
              raise Exception(
                  "auth_details['refresh_token'] does not contain a refresh token.")
  
          refresh_token = self.auth_details['refresh_token']
          params = [
              ('grant_type', 'refresh_token'),
              ('refresh_token', refresh_token)
          ]
          response = self._post('', urlencode(params),
                                CreateSend.oauth_token_uri, "application/x-www-form-urlencoded")
          new_access_token, new_expires_in, new_refresh_token = None, None, None
          r = json_to_py(response)
          new_access_token, new_expires_in, new_refresh_token = r.access_token, r.expires_in, r.refresh_token
          self.auth({
              'access_token': new_access_token,
              'refresh_token': new_refresh_token})
          return [new_access_token, new_expires_in, new_refresh_token]