docs: def oauth_user_info_getter(self, f):
          """
              Decorator function to be the OAuth user info getter
              for all the providers, receives provider and response
              return a dict with the information returned from the provider.
              The returned user info dict should have it's keys with the same
              name as the User Model.
  
              Use it like this an example for GitHub ::
  
                  @appbuilder.sm.oauth_user_info_getter
                  def my_oauth_user_info(sm, provider, response=None):
                      if provider == 'github':
                          me = sm.oauth_remotes[provider].get('user')
                          return {'username': me.data.get('login')}
                      else:
                          return {}
          """
  
          def wraps(provider, response=None):
              ret = f(self, provider, response=response)
              # Checks if decorator is well behaved and returns a dict as supposed.
              if not type(ret) == dict:
                  log.error(
                      "OAuth user info decorated function "
                      "did not returned a dict, but: {0}".format(
                          type(ret)
                      )
                  )
                  return {}
              return ret
  
          self.oauth_user_info = wraps
          return wraps