Exemplo n.º 1
0
 def authorize(self, user = None, login=True):
     if self.user is None:
         if user is None:
             raise TypeError
         self.user = user
     """Guarda el token de autorizacion"""
     if self.user is not None:#el usuario ya esta conectado, pero pide permisos
         if OAUTH_Access.get_token(self.token.key) is None: 
             OAUTH_Access.remove_token(self.user, 'twitter')
             access = OAUTH_Access.add_token(
                                             token_key=self.token.key,
                                             token_secret=self.token.secret,
                                             provider='twitter',
                                             user=self.user,
                                             )
         if login:
             twitterInfo = self.get_user_info()
             if self.user.twitter_user is None:
                 TwitterUser.register(user=self.user,
                                  uid=twitterInfo['id'], 
                                  username = twitterInfo['screen_name'],
                                  realname = twitterInfo['name'],
                                  picurl = twitterInfo['profile_image_url'],
                                  )
             else:
                 self.user.twitter_user.update(
                                          username = twitterInfo['screen_name'],
                                          realname = twitterInfo['name'],
                                          picurl = twitterInfo['profile_image_url']
                                          )
         return True
     return False
Exemplo n.º 2
0
 def _do_request(self, url):
     response, content = self.request(url)
     if response['status'] == 400: # no tenemos permisos, borrar usuario
         OAUTH_Access.remove_token(self.user, 'twitter')
         if self.user.twitter_user is not None:
             self.user.twitter_user.delete()
         raise TwitterAPIError(response['status'], content)
     if response['status'] != 200:
         raise TwitterAPIError(response['status'], content)
     return content
Exemplo n.º 3
0
    def authorize(self, user=None):
        """Guarda el token de autorizacion"""
        if user is not None:  #el usuario ya esta conectado, pero pide permisos
            if OAUTH_Access.get_token(self.token.key) is None:
                OAUTH_Access.remove_token(user, 'google')
                access = OAUTH_Access.add_token(
                    token_key=self.token.key,
                    token_secret=self.token.secret,
                    provider='google',
                    user=user,
                )

            return True
        return False
Exemplo n.º 4
0
    def authorize(self, user=None):
        """Guarda el token de autorizacion"""
        if user is not None:#el usuario ya esta conectado, pero pide permisos
            if OAUTH_Access.get_token(self.token.key) is None: 
                OAUTH_Access.remove_token(user, 'google')
                access = OAUTH_Access.add_token(
                                                token_key=self.token.key,
                                                token_secret=self.token.secret,
                                                provider='google',
                                                user=user,
                                                )

            return True
        return False
Exemplo n.º 5
0
 def authorize(self, user):
     """guarda el token de autorizacion"""
     if user is not None:#el usuario ya esta conectado, pero pide permisos
         token = OAUTH_Access.get_token(self.consumer.access_token)
         if token is None:
             OAUTH_Access.remove_token(user, 'facebook')
             token = OAUTH_Access.add_token(
                                             token_key=self.consumer.access_token,
                                             token_secret='',
                                             provider='facebook',
                                             user=user,
                                             )
         else:
             token.user = user
             token.put()
         self.consumer = GraphAPI(access_token=token.token_key)
         facebookInfo = self.get_user_info()
         if user.facebook_user is None:
             fbuser = FacebookUser.register(user=user, uid=facebookInfo['id'], 
                                            email=facebookInfo.get('email', None),
                                            realname=facebookInfo["name"],
                                            profile_url=facebookInfo["link"],
                                            access_token=self.consumer.access_token)
         else:
             user.facebook_user.update(
                          uid=facebookInfo['id'],
                          realname = facebookInfo['name'],
                          profile_url=facebookInfo["link"],
                         )
         self.user = user
         self.token  = token
         import memcache
         memclient = memcache.mem.Client()
         token_cache = {'token': token,
                        'user': self.user
                        }
         memclient.set('%sfbclienttoken_%s' % (memcache.version, 
                                               self.consumer.access_token
                                               ), 
                           token_cache)
         memclient.set('%sfbclientuser_%s' % (memcache.version, 
                                               user.id
                                               ),
                            memcache.serialize_instances(token)
                                            )
         return True
     return False
Exemplo n.º 6
0
 def authorize(self, user):
     """guarda el token de autorizacion"""
     if user is not None:  #el usuario ya esta conectado, pero pide permisos
         token = OAUTH_Access.get_token(self.consumer.access_token)
         if token is None:
             OAUTH_Access.remove_token(user, 'facebook')
             token = OAUTH_Access.add_token(
                 token_key=self.consumer.access_token,
                 token_secret='',
                 provider='facebook',
                 user=user,
             )
         else:
             token.user = user
             token.put()
         self.consumer = GraphAPI(access_token=token.token_key)
         facebookInfo = self.get_user_info()
         if user.facebook_user is None:
             fbuser = FacebookUser.register(
                 user=user,
                 uid=facebookInfo['id'],
                 email=facebookInfo.get('email', None),
                 realname=facebookInfo["name"],
                 profile_url=facebookInfo["link"],
                 access_token=self.consumer.access_token)
         else:
             user.facebook_user.update(
                 uid=facebookInfo['id'],
                 realname=facebookInfo['name'],
                 profile_url=facebookInfo["link"],
             )
         self.user = user
         self.token = token
         import memcache
         memclient = memcache.mem.Client()
         token_cache = {'token': token, 'user': self.user}
         memclient.set(
             '%sfbclienttoken_%s' %
             (memcache.version, self.consumer.access_token), token_cache)
         memclient.set('%sfbclientuser_%s' % (memcache.version, user.id),
                       memcache.serialize_instances(token))
         return True
     return False
Exemplo n.º 7
0
 def __init__(self, access_token=None, user=None):
     if user is None and access_token is None:
         raise AttributeError
     import memcache
     memclient = memcache.mem.Client()
     if user is not None:
         self.user = user
         token = memcache.deserialize_instances(memclient.get('%sfbclientuser_%s' % (memcache.version, 
                                                               user.id
                                                               )
                                            ))
         if token is None:
             token = OAUTH_Access.get_token_user(provider='facebook', user=user)
             if token is None:
                 raise OAUTHException()
             memclient.set('%sfbclientuser_%s' % (memcache.version, 
                                                               user.id
                                                               ),
                            memcache.serialize_instances(token)
                                            )
     else:
         token = memclient.get('%sfbclienttoken_%s' % (memcache.version, 
                                                               access_token
                                                               )
                                            )
         if token is None:
             token = OAUTH_Access.get_token(access_token)  # TODO: buscar por proveedor
             if token is not None:
                 self.user = token.user
                 token_cache = {'token': token,
                                'user': token.user
                                }
                 memclient.set('%sfbclienttoken_%s' % (memcache.version, 
                                                       access_token
                                               ), token_cache)
             else:
                 self.consumer = GraphAPI(access_token=access_token)
                 return
         else:
             self.user = token['user']
             token = token['token']
     self.consumer = GraphAPI(access_token=token.token_key)
Exemplo n.º 8
0
def get_perms(request):
    if not request.user.is_authenticated():
        return HttpResponseForbidden()
    from google.appengine.ext import db
    perms = {'facebook': False,
             'twitter': False,
             'google': False,
             }
    from geoauth.models import OAUTH_Access
    facebook = OAUTH_Access.all(keys_only=True).filter('provider =', 'facebook').filter('user ='******'provider =', 'twitter').filter('user ='******'provider =', 'google').filter('user ='******'facebook'] = True
    if twitter is not None:
        perms['twitter'] = True
    if google is not None:
        perms['google'] = True
    return HttpResponse(simplejson.dumps(perms), mimetype='application/json')
Exemplo n.º 9
0
 def __init__(self, token=None, user=None):
     if user is None and token is None:
         raise AttributeError
     if user is not None:
         self.user = user
         access_token = OAUTH_Access.get_token_user(provider='twitter', user=user)
         if access_token is None:
             raise OAUTHException()
         token= Token(access_token.token_key, access_token.token_secret)
     consumer = Consumer(key=settings.OAUTH['twitter']['app_key'], secret=settings.OAUTH['twitter']['app_secret'])
     from mapsServices.places.GPRequest import Client
     mem = Client()
     super(self.__class__, self).__init__(consumer, token=token, cache=mem)
Exemplo n.º 10
0
    def request(self, path, args=None, post_args=None, rpc=None):
        """Fetches the given path in the Graph API.

        We translate args to a valid query string. If post_args is given,
        we send a POST request to the given path with the given arguments.
        """
        if not args: args = {}
        if self.access_token:
            if post_args is not None:
                post_args["access_token"] = self.access_token
            else:
                args["access_token"] = self.access_token
        post_data = None if post_args is None else urllib.urlencode(post_args)
        if rpc is not None:
            return urlfetch.make_fetch_call(
                rpc,
                "https://graph.facebook.com/" + path + "?" +
                urllib.urlencode(args),
                method='GET' if post_data is None else 'POST',
                payload=post_data)

        response, content = self.req.request(
            "https://graph.facebook.com/" + path + "?" +
            urllib.urlencode(args),
            method='GET' if post_data is None else 'POST',
            body=post_data)
        try:
            content = _parse_json(content)
        except:
            raise OAUTHException("Can't parse json")
        if response['status'] == 400:
            token = OAUTH_Access.get_token(self.access_token)
            if token is not None:
                if token.user.twitter_user is not None:
                    token.user.facebook_user.delete()
                token.delete()
            raise GraphAPIError(content["error"]["type"],
                                content["error"]["message"])
        if response['status'] != 200:
            raise GraphAPIError(content["error"]["type"],
                                content["error"]["message"])
        if response['content-type'].startswith('text'):
            return content
        if response['content-type'].startswith('image'):
            content = {
                "data": content,
                "mime-type": response['content-type'],
                "url": response['url'],
            }
        raise GraphAPIError('Response Error', 'Maintype was not text or image')
Exemplo n.º 11
0
 def __init__(self, access_token=None, user=None):
     if user is None and access_token is None:
         raise AttributeError
     import memcache
     memclient = memcache.mem.Client()
     if user is not None:
         self.user = user
         token = memcache.deserialize_instances(
             memclient.get('%sfbclientuser_%s' %
                           (memcache.version, user.id)))
         if token is None:
             token = OAUTH_Access.get_token_user(provider='facebook',
                                                 user=user)
             if token is None:
                 raise OAUTHException()
             memclient.set(
                 '%sfbclientuser_%s' % (memcache.version, user.id),
                 memcache.serialize_instances(token))
     else:
         token = memclient.get('%sfbclienttoken_%s' %
                               (memcache.version, access_token))
         if token is None:
             token = OAUTH_Access.get_token(
                 access_token)  # TODO: buscar por proveedor
             if token is not None:
                 self.user = token.user
                 token_cache = {'token': token, 'user': token.user}
                 memclient.set(
                     '%sfbclienttoken_%s' %
                     (memcache.version, access_token), token_cache)
             else:
                 self.consumer = GraphAPI(access_token=access_token)
                 return
         else:
             self.user = token['user']
             token = token['token']
     self.consumer = GraphAPI(access_token=token.token_key)
Exemplo n.º 12
0
def get_perms(request):
    if not request.user.is_authenticated():
        return HttpResponseForbidden()
    from google.appengine.ext import db
    perms = {
        'facebook': False,
        'twitter': False,
        'google': False,
    }
    from geoauth.models import OAUTH_Access
    facebook = OAUTH_Access.all(keys_only=True).filter(
        'provider =', 'facebook').filter('user ='******'provider =', 'twitter').filter('user ='******'provider =', 'google').filter('user ='******'facebook'] = True
    if twitter is not None:
        perms['twitter'] = True
    if google is not None:
        perms['google'] = True
    return HttpResponse(simplejson.dumps(perms), mimetype='application/json')
Exemplo n.º 13
0
    def request(self, path, args=None, post_args=None, rpc=None):
        """Fetches the given path in the Graph API.

        We translate args to a valid query string. If post_args is given,
        we send a POST request to the given path with the given arguments.
        """
        if not args: args = {}
        if self.access_token:
            if post_args is not None:
                post_args["access_token"] = self.access_token
            else:
                args["access_token"] = self.access_token
        post_data = None if post_args is None else urllib.urlencode(post_args) 
        if rpc is not None:
            return urlfetch.make_fetch_call(rpc, "https://graph.facebook.com/" + path + "?" +
                                            urllib.urlencode(args), 
                                            method='GET' if post_data is None else 'POST',
                                            payload=post_data)
                 
        response, content = self.req.request("https://graph.facebook.com/" + path + "?" +
                                            urllib.urlencode(args), 
                                            method='GET' if post_data is None else 'POST',
                                            body=post_data)
        try:
            content = _parse_json(content)
        except:
            raise OAUTHException("Can't parse json")
        if response['status'] == 400:
            token = OAUTH_Access.get_token(self.access_token)
            if token is not None:
                if token.user.twitter_user is not None:
                    token.user.facebook_user.delete()
                token.delete()
            raise GraphAPIError(content["error"]["type"],
                                content["error"]["message"])
        if response['status'] != 200:
            raise GraphAPIError(content["error"]["type"],
                                content["error"]["message"])
        if response['content-type'].startswith('text'):
            return content
        if response['content-type'].startswith('image'):
            content = {
                "data": content,
                "mime-type": response['content-type'],
                "url": response['url'],
            }
        raise GraphAPIError('Response Error', 'Maintype was not text or image')
Exemplo n.º 14
0
 def __init__(self, token=None, user=None):
     if user is None and token is None:
         raise AttributeError
     
     from libs.gdata.contacts.client import ContactsClient
     from libs.gdata.gauth import OAuthHmacToken, ACCESS_TOKEN
     if user is not None:
         self.user = user
         access_token = OAUTH_Access.get_token_user(provider='google', user=self.user)
         if access_token is not None:
             token= Token(access_token.token_key, access_token.token_secret)
         else:
             raise OAUTHException
     consumer = Consumer(key=settings.OAUTH['google']['app_key'], secret=settings.OAUTH['google']['app_secret'])
     super(self.__class__, self).__init__(consumer, token=token)
     
     self._client = ContactsClient(source=self._source)
     self._client.auth_token = OAuthHmacToken(settings.OAUTH['google']['app_key'],
                                        settings.OAUTH['google']['app_secret'],
                                        self.token.key,
                                        self.token.secret, 
                                        ACCESS_TOKEN
                                        )
Exemplo n.º 15
0
    def __init__(self, token=None, user=None):
        if user is None and token is None:
            raise AttributeError

        from libs.gdata.contacts.client import ContactsClient
        from libs.gdata.gauth import OAuthHmacToken, ACCESS_TOKEN
        if user is not None:
            self.user = user
            access_token = OAUTH_Access.get_token_user(provider='google',
                                                       user=self.user)
            if access_token is not None:
                token = Token(access_token.token_key,
                              access_token.token_secret)
            else:
                raise OAUTHException
        consumer = Consumer(key=settings.OAUTH['google']['app_key'],
                            secret=settings.OAUTH['google']['app_secret'])
        super(self.__class__, self).__init__(consumer, token=token)

        self._client = ContactsClient(source=self._source)
        self._client.auth_token = OAuthHmacToken(
            settings.OAUTH['google']['app_key'],
            settings.OAUTH['google']['app_secret'], self.token.key,
            self.token.secret, ACCESS_TOKEN)
Exemplo n.º 16
0
 def has_perms(self):
     from geoauth.models import OAUTH_Access
     if OAUTH_Access.get_token_user('facebook', self.user) is None:
         return False
     return True
Exemplo n.º 17
0
 def has_perms(self, uid):
     from geoauth.models import OAUTH_Access
     if OAUTH_Access.get_token_user('google', self.user) is None:
         return False
     return True