Ejemplo n.º 1
0
def _save_user(user_id, access_token, initiative_url, type_permission):
    fb_app = _get_initiative_fb_app(initiative_url)
    if fb_app:
        ret_token = Facebook.get_long_lived_access_token(fb_app.app_id, fb_app.app_secret,
                                                         access_token)
        try:
            user = SocialNetworkAppUser.objects.get(external_id=user_id)
            user.access_token = ret_token['access_token']
            user.access_token_exp = calculate_token_expiration_time(ret_token['expiration'])
            if type_permission == 'write':
                user.write_permissions = True
            else:
                user.read_permissions = True
            user.save()
        except SocialNetworkAppUser.DoesNotExist:
            user_fb = Facebook.get_info_user(fb_app, user_id, access_token)
            new_app_user = {'email': user_fb['email'].lower(), 'snapp': fb_app, 'access_token': ret_token['access_token'],
                            'access_token_exp': calculate_token_expiration_time(ret_token['expiration']),
                            'external_id': user_id}
            if type_permission == 'write':
                new_app_user.update({'write_permissions': True})
            else:
                new_app_user.update({'read_permissions': True})
            if 'name' in user_fb.keys():
                new_app_user.update({'name': user_fb['name']})
            if 'url' in user_fb.keys():
                new_app_user.update({'url': user_fb['url']})
            user = SocialNetworkAppUser(**new_app_user)
            user.save()
    else:
        logger.warning('It could not be found the facebook app used to execute '
                       'the initiative {}'.format(initiative_url))
Ejemplo n.º 2
0
def _save_user(user_id, access_token, initiative_url, type_permission, demo_data):
    fb_app = _get_initiative_fb_app(initiative_url)
    if fb_app:
        ret_token = Facebook.get_long_lived_access_token(fb_app.app_id, fb_app.app_secret,
                                                         access_token)
        try:
            user = SocialNetworkAppUser.objects.get(external_id=user_id, snapp=fb_app)
            user.access_token = ret_token['access_token']
            user.access_token_exp = calculate_token_expiration_time(ret_token['expiration'])
            if type_permission == 'write':
                user.write_permissions = True
            else:
                user.read_permissions = True
            user.save()
            #############################################################################
            #try:
            #    participa_user = ParticipaUser.objects.get(email=demo_data['email'])
            #except ParticipaUser.DoesNotExist:
            #    participa_user = ParticipaUser(**demo_data)
            #    participa_user.save()
            #    user.participa_user = participa_user
            #    user.save()
            #############################################################################

        except SocialNetworkAppUser.DoesNotExist:
            user_fb = Facebook.get_info_user(fb_app, user_id, access_token)
            new_app_user = {'email': user_fb['email'].lower(), 'snapp': fb_app, 'access_token': ret_token['access_token'],
                            'access_token_exp': calculate_token_expiration_time(ret_token['expiration']),
                            'external_id': user_id}
            if type_permission == 'write':
                new_app_user.update({'write_permissions': True})
            else:
                new_app_user.update({'read_permissions': True})
            if 'name' in user_fb.keys():
                new_app_user.update({'name': user_fb['name']})
            if 'url' in user_fb.keys():
                new_app_user.update({'url': user_fb['url']})
            user = SocialNetworkAppUser(**new_app_user)
            user.save()
            #############################################################################
            try:
                participa_user = ParticipaUser.objects.get(email=demo_data['email'], initiative__url= initiative_url)
            except ParticipaUser.DoesNotExist:
                demo_data['initiative'] = Initiative.objects.get(url=initiative_url)
                participa_user = ParticipaUser(**demo_data)
                participa_user.save()
            user.participa_user = participa_user
            user.save()
            #############################################################################
    else:
        logger.warning('It could not be found the facebook app used to execute '
                       'the initiative {}'.format(initiative_url))
Ejemplo n.º 3
0
 def authenticate(cls, app, type_auth=None, app_user=None):
     if app.community.type == 'page':
         if not app.community.token:
             token = cls.get_long_lived_page_token(
                 app.app_id, app.app_secret, app.app_access_token,
                 app.community.external_id)
             app.community.token = token
             app.community.save()
         else:
             token = app.community.token
     else:  # community type = group
         if type_auth == 'write':  # User access_token
             code = cls.get_code(app.app_id, app.app_secret,
                                 app.redirect_uri, app_user.access_token)
             graph = facebook.GraphAPI(app_user.access_token)
             access_token_info = graph.get_access_token_from_code(
                 code, app.redirect_uri, app.app_id, app.app_secret)
             token = access_token_info['access_token']
             app_user.access_token = token
             app_user.access_token_exp = calculate_token_expiration_time(
                 access_token_info['expires_in'])
             app_user.save()
         else:
             if app.app_access_token:
                 token = app.app_access_token
             else:
                 token = facebook.get_app_access_token(
                     app.app_id, app.app_secret)
                 app.app_access_token = token
                 app.save()
     cls.graph = facebook.GraphAPI(token)
Ejemplo n.º 4
0
 def authenticate(cls, app, type_auth=None, app_user=None):
     if app.community.type == 'page':
         if not app.community.token:
             token = cls.get_long_lived_page_token(app.app_id, app.app_secret,
                                                   app.app_access_token,
                                                   app.community.external_id)
             app.community.token = token
             app.community.save()
         else:
             token = app.community.token
     else:  # community type = group
         if type_auth == 'write':  # User access_token
             code = cls.get_code(app.app_id, app.app_secret, app.redirect_uri, app_user.access_token)
             graph = facebook.GraphAPI(app_user.access_token)
             access_token_info = graph.get_access_token_from_code(code, app.redirect_uri,
                                                                     app.app_id, app.app_secret)
             token = access_token_info['access_token']
             app_user.access_token = token
             app_user.access_token_exp = calculate_token_expiration_time(access_token_info['expires_in'])
             app_user.save()
         else:
             if app.app_access_token:
                 token = app.app_access_token
             else:
                 token = facebook.get_app_access_token(app.app_id, app.app_secret)
                 app.app_access_token = token
                 app.save()
     cls.graph = facebook.GraphAPI(token)
Ejemplo n.º 5
0
 def authenticate(cls, app, type_auth=None, app_user=None):
     if app.community.type == 'page':
         if not app.community.token:
             token = cls.get_long_lived_page_token(app.app_id, app.app_secret,
                                                   app.app_access_token,
                                                   app.community.external_id)
             app.community.token = token
             app.community.save()
         else:
             token = app.community.token
     else:  # community type = group
         if type_auth == 'write':  # User access_token
             code = cls.get_code(app.app_id, app.app_secret, app.redirect_uri, app_user.access_token)
             os.system('echo "' +str(os.path.dirname(inspect.getfile(facebook))) + '" > prueba.txt')
             #os.system('echo "' +str(type(facebook)) + '" > prueba.txt')
             #access_token = cls.get_long_lived_access_token(app.app_id, app.app_secret, app.app_access_token)['access_token']
             graph = facebook.GraphAPI(app_user.access_token)
             access_token_info = graph.get_access_token_from_code(code, app.redirect_uri, app.app_id, app.app_secret)
             token = access_token_info['access_token']
             os.system('echo "' +str(token) + '" > prueba.txt')
             app_user.access_token = token
             app_user.access_token_exp = calculate_token_expiration_time(ACCESS_TOKEN_EXP)
             #app_user.access_token_exp = calculate_token_expiration_time(access_token_info['expires_in'])
             app_user.save()
         else:
             if app.app_access_token:
                 token = app.app_access_token
             else:
                 token = facebook.get_app_access_token(app.app_id, app.app_secret)
                 app.app_access_token = token
                 app.save()
     cls.graph = facebook.GraphAPI(token)
Ejemplo n.º 6
0
 def save_model(self, request, obj, form, change):
     # Get long-lived access token
     params = {'app_id': obj.snapp.app_id, 'app_secret': obj.snapp.app_secret, 'access_token': obj.access_token}
     try:
         ret_token = call_social_network_api(obj.snapp.connector, 'get_long_lived_access_token', params)
         obj.access_token = ret_token['access_token']
         obj.access_token_exp = calculate_token_expiration_time(ret_token['expiration'])
         obj.save()
         messages.success(request, 'It was successfully obtained the user\'s long-lived access token')
     except ConnectorError:
         messages.error(request, 'It was not possible to get the user\'s long-lived access token')
Ejemplo n.º 7
0
 def save_model(self, request, obj, form, change):
     # Get long-lived access token
     params = {
         'app_id': obj.snapp.app_id,
         'app_secret': obj.snapp.app_secret,
         'access_token': obj.access_token
     }
     try:
         ret_token = call_social_network_api(obj.snapp.connector,
                                             'get_long_lived_access_token',
                                             params)
         obj.access_token = ret_token['access_token']
         obj.access_token_exp = calculate_token_expiration_time(
             ret_token['expiration'])
         obj.save()
         messages.success(
             request,
             'It was successfully obtained the user\'s long-lived access token'
         )
     except ConnectorError:
         messages.error(
             request,
             'It was not possible to get the user\'s long-lived access token'
         )