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
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
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
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
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
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
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)
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')
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)
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')
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)
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')
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')
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 )
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)
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
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