'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 oauth_user_info_getter(self, f):

    def wraps(provider, response=None):
        ret = f(self, provider, response=response)
        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
