Python Hack A Thon 3 Facebook Application On A

Post on 17-May-2015

2.617 views 1 download

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アプリ

Facebook

Facebook

いわゆる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) {        //なんか 処理する    });