code: def _retrieve_userinfo(self, access_token=None):
          
          if 'userinfo_uri' not in self.client_secrets:
              logger.debug('Userinfo uri not specified')
              raise AssertionError('UserInfo URI not specified')
  
          # Cache the info from this request
          if '_oidc_userinfo' in g:
              return g._oidc_userinfo
  
          http = httplib2.Http()
          if access_token is None:
              try:
                  credentials = OAuth2Credentials.from_json(
                      self.credentials_store[g.oidc_id_token['sub']])
              except KeyError:
                  logger.debug("Expired ID token, credentials missing",
                               exc_info=True)
                  return None
              credentials.authorize(http)
              resp, content = http.request(self.client_secrets['userinfo_uri'])
          else:
              # We have been manually overriden with an access token
              resp, content = http.request(
                  self.client_secrets['userinfo_uri'],
                  "POST",
                  body=urlencode({"access_token": access_token}),
                  headers={'Content-Type': 'application/x-www-form-urlencoded'})
  
          logger.debug('Retrieved user info: %s' % content)
          info = _json_loads(content)
  
          g._oidc_userinfo = info
  
          return info
docs: Requests extra user information from the Provider's UserInfo and
          returns the result.
  
          :returns: The contents of the UserInfo endpoint.
          :rtype: dict