SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
Python Hack-a-thon #3

Facebook application on
      appengine
               aodag
       http://blog.aodag.jp/
          twitter: @aodag
 http://www.facebook.com/aodag
Facebookアプリを作ってみよう

 Facebook
 Facebookアプリ
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) {
        //なんか 処理する
    });

Más contenido relacionado

Similar a Python Hack A Thon 3 Facebook Application On A

ゼロからわかる!Facebookアプリの作り方
ゼロからわかる!Facebookアプリの作り方ゼロからわかる!Facebookアプリの作り方
ゼロからわかる!Facebookアプリの作り方
Shuichi Takenaka
 
Web事例からみたセマンティックウェブ/野田 健夫
Web事例からみたセマンティックウェブ/野田 健夫Web事例からみたセマンティックウェブ/野田 健夫
Web事例からみたセマンティックウェブ/野田 健夫
kurubushionline
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Social
ngi group.
 
20120904OMCセミナー資料(抜粋版)
20120904OMCセミナー資料(抜粋版)20120904OMCセミナー資料(抜粋版)
20120904OMCセミナー資料(抜粋版)
貴一 西田
 
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
脇村 隆
 

Similar a Python Hack A Thon 3 Facebook Application On A (20)

ゼロからわかる!Facebookアプリの作り方
ゼロからわかる!Facebookアプリの作り方ゼロからわかる!Facebookアプリの作り方
ゼロからわかる!Facebookアプリの作り方
 
Web事例からみたセマンティックウェブ/野田 健夫
Web事例からみたセマンティックウェブ/野田 健夫Web事例からみたセマンティックウェブ/野田 健夫
Web事例からみたセマンティックウェブ/野田 健夫
 
Facebookアプリの作り方入門
Facebookアプリの作り方入門Facebookアプリの作り方入門
Facebookアプリの作り方入門
 
Api
ApiApi
Api
 
121002seminar j action
121002seminar j action121002seminar j action
121002seminar j action
 
Facebook Report
Facebook ReportFacebook Report
Facebook Report
 
Basis of Firefox Apps
Basis of Firefox AppsBasis of Firefox Apps
Basis of Firefox Apps
 
Google Play Developer APIを使ってみた
Google Play Developer APIを使ってみたGoogle Play Developer APIを使ってみた
Google Play Developer APIを使ってみた
 
外部サイトのFacebook連動
外部サイトのFacebook連動外部サイトのFacebook連動
外部サイトのFacebook連動
 
cloudmix GAE slides
cloudmix GAE slidescloudmix GAE slides
cloudmix GAE slides
 
Facebook制作から運用のノウハウ一挙見せます! 告健士郎
Facebook制作から運用のノウハウ一挙見せます! 告健士郎Facebook制作から運用のノウハウ一挙見せます! 告健士郎
Facebook制作から運用のノウハウ一挙見せます! 告健士郎
 
ソーシャルマーケティングとFbアプリ開発の勘所
ソーシャルマーケティングとFbアプリ開発の勘所ソーシャルマーケティングとFbアプリ開発の勘所
ソーシャルマーケティングとFbアプリ開発の勘所
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Social
 
20120904OMCセミナー資料(抜粋版)
20120904OMCセミナー資料(抜粋版)20120904OMCセミナー資料(抜粋版)
20120904OMCセミナー資料(抜粋版)
 
ゆるふわ Xamarin Tips
ゆるふわ Xamarin Tipsゆるふわ Xamarin Tips
ゆるふわ Xamarin Tips
 
Facebook(フェイスブック)とWordPressの連携の仕組みとは?
Facebook(フェイスブック)とWordPressの連携の仕組みとは?Facebook(フェイスブック)とWordPressの連携の仕組みとは?
Facebook(フェイスブック)とWordPressの連携の仕組みとは?
 
Firefox os app dev
Firefox os app devFirefox os app dev
Firefox os app dev
 
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
 
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
 
Chrome Apps & Chromeウェブストア概要
Chrome Apps & Chromeウェブストア概要Chrome Apps & Chromeウェブストア概要
Chrome Apps & Chromeウェブストア概要
 

Más de Atsushi Odagiri

Sqlalchemy sqlの錬金術
Sqlalchemy  sqlの錬金術Sqlalchemy  sqlの錬金術
Sqlalchemy sqlの錬金術
Atsushi Odagiri
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
Atsushi Odagiri
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri
 
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europythonPyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
Atsushi Odagiri
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid unique
Atsushi Odagiri
 
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
Atsushi Odagiri
 

Más de Atsushi Odagiri (20)

みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようみんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしよう
 
async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022
 
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
 
pyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptoolspyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptools
 
Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定
 
Pythonとパッケージングと私
Pythonとパッケージングと私Pythonとパッケージングと私
Pythonとパッケージングと私
 
Python3 移行への軌跡
Python3 移行への軌跡Python3 移行への軌跡
Python3 移行への軌跡
 
パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016
 
Sqlalchemy sqlの錬金術
Sqlalchemy  sqlの錬金術Sqlalchemy  sqlの錬金術
Sqlalchemy sqlの錬金術
 
Clack meetup #1 lt
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 lt
 
Pyramid入門
Pyramid入門Pyramid入門
Pyramid入門
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
Bplt11 form alchemy
Bplt11 form alchemyBplt11 form alchemy
Bplt11 form alchemy
 
Python3でwebアプリ
Python3でwebアプリPython3でwebアプリ
Python3でwebアプリ
 
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europythonPyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid unique
 
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
 

Python Hack A Thon 3 Facebook Application On A