各ページでのFacebookのGraphAPIの使い回し

50 views
Skip to first unread message

shinriyo

unread,
Apr 24, 2012, 11:46:52 AM4/24/12
to web2py...@googlegroups.com
お世話になっています。杉田です。

こちら、のページ
http://web2py.com/books/default/chapter/31/8
で、GraphAPIを使用していますが、
認証にしか使っておらず具体的な使用法方法を知りたいです。
各ページでGraphAPIを使用してFacebookの情報を出すことをすると思います。
このself.graphに入った、変数を各ページで使い回したりしているようなサンプルが見当たりません。
この変数をグローバル変数へ代入してから各アクション内で使用するのがweb2py的なやりかたなのでしょうか?
宜しくお願いします。

kato

unread,
Apr 24, 2012, 6:33:45 PM4/24/12
to web2py...@googlegroups.com
杉田さん

GraphAPI については、「何それ、美味しいの?」程度の認識なので、さっぱりわかりません。
わかる範囲で返答します。

サンプルについては、使用しているfacebook用のモジュールの情報を中心に探した方がよいと思います。
facebook情報の取得方法とかは、web2pyの機能範囲を超えているので、web2pyで探して無い可能性があります。

このself.graphに入った、変数を各ページで使い回したりしているようなサンプルが見当たりません。
この変数をグローバル変数へ代入してから各アクション内で使用するのがweb2py的なやりかたなのでしょうか?

各ページで情報を使いまわすなら、sessionを使ってください。 http://web2py.com/books/default/chapter/31/4#session


session.test = request.vars.test     # session変数への代入
test = session.test                        # session変数からの取り出し

画面の項目に直接sessionの値を設定するには、次のようにします。


INPUT(_type='text', _name='test', _value=session.test)



2012年4月25日0:46 shinriyo <shin...@gmail.com>:

shinriyo

unread,
May 5, 2012, 5:42:26 AM5/5/12
to web2py...@googlegroups.com
katoさん

お世話になっております。返信ありがとうございます。
返信遅くなりましたが、GWなので試してみました。
やはりsessionなのですね。
以下のようにしてみました。

~~例のFacebookのサンプルのmodels/db.py一部~~~~~~~
    # override function that fetches user info
    def get_user(self):
        "Returns the user using the Graph API"
        if not self.accessToken():
            return None
        if not self.graph:
            self.graph = GraphAPI((self.accessToken()))
            # このようにグローバル変数へ代入
            session.graph = self.graph
        try:
~~~

~~views/graph/index.html~~~~
{{extend 'layout.html'}}
{{=graph}}
~~~~

~~controllers/graph.py~~
def index():
    graph = session.graph
    return dict(graph=graph)
~~~~~~~~

しかしながら表示はNoneでした。
Facebookとの連携が難しいですね。

2012年4月25日水曜日 0時46分52秒 UTC+9 shinriyo:

kato

unread,
May 5, 2012, 5:29:57 PM5/5/12
to web2py...@googlegroups.com
杉田さん

何をしたいのかイマイチわかりませんが、facebookにログインしたユーザ情報なら auth で持っています。
session変数も使う必要はありません。


def user_info():
    return dict(user=auth.user)
とすれば、現在ログインしているユーザ情報を全て表示します。

この内、ファーストネームだけ表示させたい場合は、

def user_info():
    return dict(user=auth.user.first_name)
とします。

web2pyでのユーザID値は、

auth.user_id

とします。

authで持っているのはユーザの基本的な情報だけなので、その他必要なら別途facebookから引っ張ってくる必要があります。
graph api を使うのだろうと思いますが、方法はわかりません。

2012年5月5日18:42 shinriyo <shin...@gmail.com>:

shinriyo

unread,
May 7, 2012, 10:19:35 PM5/7/12
to web2py...@googlegroups.com
katoさん

ありがとうございます。

authの中にすでにFacebookからとってきた情報があったのですね。
やりたいこととしては、アクセストークンを利用してGraphAPIを利用したりFQLを使ったりしたいと思っています。

2012年5月6日日曜日 6時29分57秒 UTC+9 kato:
Reply all
Reply to author
Forward
0 new messages