From: Ben Darnell Date: Thu, 3 Mar 2011 21:45:58 +0000 (-0800) Subject: Update facebook demo to use the graph api instead of the older api. X-Git-Tag: v2.0.0~115 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f43dd1414a4f41766f3dc84c309869ed2ff50062;p=thirdparty%2Ftornado.git Update facebook demo to use the graph api instead of the older api. --- diff --git a/demos/facebook/facebook.py b/demos/facebook/facebook.py index 0c984ddaa..1428c709f 100755 --- a/demos/facebook/facebook.py +++ b/demos/facebook/facebook.py @@ -61,32 +61,39 @@ class BaseHandler(tornado.web.RequestHandler): return tornado.escape.json_decode(user_json) -class MainHandler(BaseHandler, tornado.auth.FacebookMixin): +class MainHandler(BaseHandler, tornado.auth.FacebookGraphMixin): @tornado.web.authenticated @tornado.web.asynchronous def get(self): - self.facebook_request( - method="stream.get", - callback=self.async_callback(self._on_stream), - session_key=self.current_user["session_key"]) + self.facebook_request("/me/home", self._on_stream, + access_token=self.current_user["access_token"]) def _on_stream(self, stream): if stream is None: # Session may have expired self.redirect("/auth/login") return - # Turn profiles into a dict mapping id => profile - stream["profiles"] = dict((p["id"], p) for p in stream["profiles"]) self.render("stream.html", stream=stream) -class AuthLoginHandler(BaseHandler, tornado.auth.FacebookMixin): +import logging +class AuthLoginHandler(BaseHandler, tornado.auth.FacebookGraphMixin): @tornado.web.asynchronous def get(self): - if self.get_argument("session", None): - self.get_authenticated_user(self.async_callback(self._on_auth)) + my_url = (self.request.protocol + "://" + self.request.host + + "/auth/login?next=" + + tornado.escape.url_escape(self.get_argument("next", "/"))) + if self.get_argument("code", False): + self.get_authenticated_user( + redirect_uri=my_url, + client_id=self.settings["facebook_api_key"], + client_secret=self.settings["facebook_secret"], + code=self.get_argument("code"), + callback=self._on_auth) return - self.authorize_redirect("read_stream") + self.authorize_redirect(redirect_uri=my_url, + client_id=self.settings["facebook_api_key"], + extra_params={"scope": "read_stream"}) def _on_auth(self, user): if not user: @@ -95,25 +102,15 @@ class AuthLoginHandler(BaseHandler, tornado.auth.FacebookMixin): self.redirect(self.get_argument("next", "/")) -class AuthLogoutHandler(BaseHandler, tornado.auth.FacebookMixin): - @tornado.web.asynchronous +class AuthLogoutHandler(BaseHandler, tornado.auth.FacebookGraphMixin): def get(self): self.clear_cookie("user") - if not self.current_user: - self.redirect(self.get_argument("next", "/")) - return - self.facebook_request( - method="auth.revokeAuthorization", - callback=self.async_callback(self._on_deauthorize), - session_key=self.current_user["session_key"]) - - def _on_deauthorize(self, response): self.redirect(self.get_argument("next", "/")) class PostModule(tornado.web.UIModule): - def render(self, post, actor): - return self.render_string("modules/post.html", post=post, actor=actor) + def render(self, post): + return self.render_string("modules/post.html", post=post) def main(): diff --git a/demos/facebook/templates/modules/post.html b/demos/facebook/templates/modules/post.html index 6b50ac0f7..1738805a7 100644 --- a/demos/facebook/templates/modules/post.html +++ b/demos/facebook/templates/modules/post.html @@ -1,29 +1,15 @@
- + {% set author_url="http://www.facebook.com/profile.php?id=" + escape(post["from"]["id"]) %} +
- {{ escape(actor["name"]) }} + {{ escape(post["from"]["name"]) }} {% if post["message"] %} {{ escape(post["message"]) }} {% end %} - {% if post["attachment"] %} -
- {% if post["attachment"].get("name") %} - - {% end %} - {% if post["attachment"].get("description") %} -
{{ post["attachment"]["description"] }}
- {% end %} - {% for media in filter(lambda m: m.get("src") and m["type"] in ("photo", "link"), post["attachment"].get("media", [])) %} - - {{ escape(media.get( - - {% end %} -
- {% end %}
diff --git a/demos/facebook/templates/stream.html b/demos/facebook/templates/stream.html index 19baa28cb..4e6fc80c6 100644 --- a/demos/facebook/templates/stream.html +++ b/demos/facebook/templates/stream.html @@ -13,8 +13,8 @@
{{ _("Refresh stream") }}
- {% for post in stream["posts"] %} - {{ modules.Post(post, stream["profiles"][post["actor_id"]]) }} + {% for post in stream["data"] %} + {{ modules.Post(post) }} {% end %}