def fetch_feed(self, feed_type, creds): # set the oauth credentials user = users.get_current_user() logging.debug("getting albums for: %s" % user.email()) oauth_client = auth.create_oauth_client(user.email(), "google") url = self.feed_url(feed_type) response, content = oauth_client.request(url, "GET") if response["status"] == "200": logging.debug("album feed retrieved successfully") data = {} if feed_type == "albums": data["albums"] = self.parse_picasa_feed(feed_type, simplejson.loads(content)) path = os.path.join(os.path.dirname(__file__), "albums.html") elif feed_type == "photos": data["album"], data["photos"] = self.parse_picasa_feed(feed_type, simplejson.loads(content)) path = os.path.join(os.path.dirname(__file__), "photos.html") # data['twitter'] = twitter.get_twitter_screen_name() self.response.out.write(template.render(path, data)) elif content == "Unknown user.": # if user hasn't started using web albums yet picasa_link = '<a href="picasaweb.google.com">here</a>' logout_url = '<a href="%s">log out</a>' % users.create_logout_url("/") self.response.out.write( "You haven't create a Picasa Web account yet! Click %s to start or %s." % (picasa_link, logout_url) ) else: self.response.out.write("something went wrong!!!") logging.debug("something went wrong!!!") logging.debug(content) logging.debug(response)
def signin_complete(provider): oauth_client = auth.create_oauth_client(provider) oauth_resp = oauth_client.fetch_token(auth_resp=request.url) if not 'access_token' in oauth_resp: # raise error pass session[oauth_client.config('TOKEN_SESSION_KEY')] = { 'token_type': oauth_resp.get('token_type'), 'access_token': oauth_resp.get('access_token'), 'scope': oauth_resp.get('scope') } return redirect(url_for('signin_profile', provider=provider.lower()))
def get_tags(self): logging.debug("getting tags for album") user = users.get_current_user() oauth_client = auth.create_oauth_client(user.email(), "google") url = ( "https://picasaweb.google.com/data/feed/api/user/%s/albumid/%s?prettyprint=true&alt=json&kind=tag&fields=entry(title)" % (user.email(), self.request.get("album_id")) ) response, content = oauth_client.request(url, "GET") feed = simplejson.loads(content) tags = [] # each tag is an entry in the feed try: for tag in feed["feed"]["entry"]: tags.append(tag["title"]["$t"]) return tags except KeyError: return
def signin_profile(provider=None): oauth_client = auth.create_oauth_client(provider) oauth_resp = oauth_client.get('/user') profile = oauth_resp.json() user_id = profile.get('id') user = models.User.get_by_id(user_id) if not user: user = models.User(id=user_id) if user.key.id() != int(oauth_client.config('USERID')): return abort(401) user.populate(name=profile.get('name') if profile.get('name') else profile. get('login')) user.put() session['user'] = user.as_dict() return redirect(url_for('manage'))
def signin(provider): oauth_client = auth.create_oauth_client(provider) # start oauth dance authorization_url, state = oauth_client.authorize() session[oauth_client.config('STATE_SESSION_KEY')] = state return redirect(authorization_url)