示例#1
0
 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)
示例#2
0
文件: main.py 项目: fabriziou/bits
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()))
示例#3
0
 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
示例#4
0
文件: main.py 项目: fabriziou/bits
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'))
示例#5
0
文件: main.py 项目: fabriziou/bits
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)