External Hackathon (Hack-a-thon) @ Materialise Malaysia 2015 1.
Python Hack A Thon 3 Facebook Application On A
-
Upload
atsushi-odagiri -
Category
Documents
-
view
2.617 -
download
1
Transcript of Python Hack A Thon 3 Facebook Application On A
Python Hack-a-thon #3
Facebook application on appengine
aodaghttp://blog.aodag.jp/
twitter: @aodaghttp://www.facebook.com/aodag
Facebookアプリを作ってみよう
FacebookFacebookアプリ
いわゆるSNS世界最大Flickrよりも写真が多いとかtwitterのようなアクティビティストリームリンクや写真などを共有グループなどなど
Facebookアプリ
Facebook上で動くアプリケーションユーザーの情報を取得できるユーザーの友達の情報を取得できるアプリ上での行動をアクティビティに投稿できるなどなど
Facebookアプリ
FBMLアプリが作成したFBMLをFacebookがHTMLに変換する。 サーバーサイドで各種クライアントライブラリを使ってFacebookの機能にアクセスする。IFRAMEアプリが作成したHTMLをIFRAME内で表示する。XFBMLで、FBMLの機能を一部利用できる。Javascript SDKでFacebookの機能を使える。サーバーサイドからのアクセスも可能。
FBML
IFrame
Google App EngineでFacebookアプリを作るには準備Facebook開発者アプリで、appkeyとsecretを取得する。http://www.facebook.com/developers xd_receiver.htm をダウンロードする。http://www.somethingtoputhere.com/xd_receiver.htm
app.yaml
...handlers:
- url: / static_files: static/index.html upload: static/index.html
- url: /xd_receiver.htm static_files: static/xd_receiver.htm upload: static/xd_receiver.htm
- url: .* script: main.py
index.html<!-- javascript libraryをインポート --> <script type="text/javascript" src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"></script> <!-- jqueryとかもインポート -->略<!-- 初期化 --> <script > apikey = "d831ba0c7dd7b830572fb5f928f94bc4"; FB.init(apikey, "xd_receiver.htm"); FB.ensureInit(function() {$(function() {// ここで初期化});}); </script>
main.py wsgiミドルウェア
application = webapp.WSGIApplication([('/fbprofile', ProfileHandler)], debug=True) import facebook.wsgi as facebook import settings application = facebook.FacebookWSGIMiddleware(application, settings.fbconfig) util.run_wsgi_app(application)
さらにmain.py リクエストハンドラ
class FacebookHandler(webapp.RequestHandler): def init(self, request, response): """ Facebook用スーパークラス """ super(FacebookHandler, self).init(request, response) self.facebook = request.environ['pyfacebook.facebook'] if self.facebook.check_session(self.request): self.request.remote_user = self.facebook.uid
FBML
ログインユーザー名を表示する例 <fb:name uid="loggedinuser" />
ユーザー12345のプロフィール写真を表示する例 <fb:profile-pic uid="12345" linked="true" />
FBMLをJavascriptライブラリで変換する
FB.XFBML.Host.parseDomTree();
FQL
(´-`).。oO(また新しいQuery Languageか)
FQLの例
SELECT name FROM album WHERE owner IN ( SELECT uid2 FROM friend WHERE uid1 = 530888600)
aodag(530888600)の友達のアルバム名を全て取得する
FQLをJavascriptクライアントから呼ぶ
FB.Facebook.apiClient.fql_query(query, function(result) { //なんか 処理する });