Example #1
0
    def get(self):
        app_id = self.request.get("app_id")
        app_id_args = dict(app_id=app_id)
        redirect_uri = self.request.path_url + "?" + urllib.urlencode(
            app_id_args)
        args = dict(client_id=app_id, redirect_uri=redirect_uri)

        if self.request.get("code"):
            self.response.out.write("OAuth Dance Step 2 for App ID '" +
                                    app_id + "'.<br>\n")

            query = db.Query(App)
            query.filter('app_id =', app_id)
            app = query.fetch(limit=1)[0]

            app_secret = app.app_secret
            args["client_secret"] = app_secret
            args["client_id"] = app_id
            args["code"] = self.request.get("code")
            response = cgi.parse_qs(
                urllib2.urlopen(
                    "https://graph.facebook.com/oauth/access_token?" +
                    urllib.urlencode(args)).read())
            access_token = response["access_token"][-1]

            # Download the user profile and cache a local instance of the basic profile info
            profile = json.load(
                urllib.urlopen("https://graph.facebook.com/me?" +
                               urllib.urlencode(dict(
                                   access_token=access_token))))
            user_id = str(profile["id"])
            key_name = app_id + "_" + user_id
            user = App_User(key_name=key_name,
                            id=user_id,
                            app_id=app_id,
                            name=profile["name"],
                            email=profile["email"],
                            access_token=access_token,
                            profile_url=profile["link"],
                            token_status="Active")
            user.put()
            set_cookie(self.response,
                       "fb_user",
                       str(profile["id"]),
                       expires=time.time() + 30 * 86400,
                       secret=app_secret)

            encoded_app_id = base64.b64encode(app_id)
            self.redirect("/show_users?app_id=" + encoded_app_id)
        else:
            scope = cgi.escape(self.request.get("scope"))
            custom_scope = "&scope=" + scope
            custom_request_url = "https://www.facebook.com/dialog/oauth?" + urllib.urlencode(
                args) + custom_scope
            self.redirect(custom_request_url)
Example #2
0
 def post(self):
     app_id = self.request.get("app_id")
     access_token = self.request.get("access_token")
     
     logging.info("App ID %s || Access Token: %s" % 
                   (app_id, access_token))
     profile = json.load(urllib.urlopen("https://graph.facebook.com/me?" + 
                                        urllib.urlencode(dict(access_token=access_token))))        
     user_id = str(profile["id"])
     key_name = app_id + "_" + user_id
     user = App_User(key_name=key_name, id=user_id, app_id=app_id,
                     name=profile["name"], email=profile["email"], access_token=access_token,
                     profile_url=profile["link"], token_status="Active")
     user.put()
Example #3
0
    def post(self):
        app_id = self.request.get("app_id")
        access_token = self.request.get("access_token")

        logging.info("App ID %s || Access Token: %s" % (app_id, access_token))
        profile = json.load(
            urllib.urlopen("https://graph.facebook.com/me?" +
                           urllib.urlencode(dict(access_token=access_token))))
        user_id = str(profile["id"])
        key_name = app_id + "_" + user_id
        user = App_User(key_name=key_name,
                        id=user_id,
                        app_id=app_id,
                        name=profile["name"],
                        email=profile["email"],
                        access_token=access_token,
                        profile_url=profile["link"],
                        token_status="Active")
        user.put()
Example #4
0
 def get(self):
     app_id = self.request.get("app_id")
     app_id_args = dict(app_id=app_id)
     redirect_uri = self.request.path_url + "?" + urllib.urlencode(app_id_args)
     args = dict(client_id=app_id, redirect_uri=redirect_uri)
     
     if self.request.get("code"):
         self.response.out.write("OAuth Dance Step 2 for App ID '" + app_id + "'.<br>\n")            
         
         query = db.Query(App)
         query.filter('app_id =', app_id)
         app = query.fetch(limit=1)[0]
        
         app_secret = app.app_secret
         args["client_secret"] = app_secret
         args["client_id"] = app_id
         args["code"] = self.request.get("code")    
         response = cgi.parse_qs(urllib2.urlopen("https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(args)).read())
         access_token = response["access_token"][-1]
         
         # Download the user profile and cache a local instance of the basic profile info
         profile = json.load(urllib.urlopen("https://graph.facebook.com/me?" + urllib.urlencode(dict(access_token=access_token))))        
         user_id = str(profile["id"])
         key_name = app_id + "_" + user_id
         user = App_User(key_name=key_name, id=user_id, app_id=app_id,
                     name=profile["name"], email=profile["email"], access_token=access_token,
                     profile_url=profile["link"], token_status="Active")
         user.put()
         set_cookie(self.response, "fb_user", str(profile["id"]),
                    expires=time.time() + 30 * 86400, secret=app_secret)
         
         encoded_app_id = base64.b64encode(app_id)
         self.redirect("/show_users?app_id=" + encoded_app_id)
     else:
         scope = cgi.escape(self.request.get("scope"))
         custom_scope = "&scope=" + scope
         custom_request_url = "https://www.facebook.com/dialog/oauth?" + urllib.urlencode(args) + custom_scope
         self.redirect(custom_request_url)
Example #5
0
    def search(self, app_id, query):
        #case-insensitive matching
        query = query.lower()
        q = App_User.all()
        all = q.count()
        q.filter("app_id =", app_id)
        app_users = q.fetch(all)
        results = set()

        for user in app_users:
            name_index = user.name.lower().find(query)
            id_index = user.id.lower().find(query)
            email_index = -1
            if user.email:
                email_index = user.email.lower().find(query)
            matches = name_index >= 0 or id_index >= 0 or email_index >= 0
            if matches:
                results.add(user)

        return results
Example #6
0
 def search(self, app_id, query):
     #case-insensitive matching
     query = query.lower() 
     q = App_User.all()
     all = q.count()
     q.filter("app_id =", app_id)
     app_users = q.fetch(all)
     results = set()
      
     for user in app_users:
         name_index = user.name.lower().find(query)
         id_index = user.id.lower().find(query)
         email_index = -1
         if user.email:
             email_index = user.email.lower().find(query)
         matches = name_index >= 0 or id_index >= 0 or email_index >= 0
         if matches:
             results.add(user) 
                     
     return results