-2

FacebookイベントのURLを取得するフィールド「FBURL」を持つコンテンツタイプが必要です。このタイプのノードをロードすると、FacebookイベントのコンテンツがFBAPIを介して取得されます。コンテンツはFacebookのコンテンツと最新である必要があるため、データベースから取得することはできません。

これまで、node_load()ノードのロード中にコンテンツを追加するためのモジュールを作成しましたが、FBOauthモジュールから呼び出す関数がわかりません...その前に、単純なfile_get_contents();を試してみました。これは、FBアプリからのアクセストークンの有効期限が切れ、新しいトークンを動的に取得する方法がわからなくなるまでうまく機能しました。

私は迷子になっていると思うので、誰かがそれを行う方法について私を導くことができますか?

どうもありがとう!

4

1 に答える 1

0

わかりました(-1はわかりませんが、質問は、私がそれを行うのに正しい軌道に乗っているかどうかを知ることを目的としていました):

function fb_event_crawler_node_load($nodes, $types) {
    foreach ($nodes as $node) {
        if ($node->type=="event"){
            $fb_url = $node->field_event_url['und'][0]['value'];
            $url = parse_url($fb_url);
            if (!$url['host'] == 'www.facebook.com'){
                echo t('This is not a Facebook URL');
            }

            $path_exploded = explode("/", $url['path']);
            if (!$path_exploded[1] == 'events'){
                echo t("This is not a Facebook event page!");
            }

            $fb_event_id=$path_exploded[2];

                // dpm($path_exploded);


            $app_id = isset($app_id) ? $app_id : variable_get('fboauth_id', '');
            $app_secret = isset($app_secret) ? $app_secret : variable_get('fboauth_secret', '');
            $app_token_url = "https://graph.facebook.com/oauth/access_token?"
            . "client_id=" . $app_id
            . "&client_secret=" . $app_secret 
            . "&grant_type=client_credentials";

            $response = file_get_contents($app_token_url);
            $params = null;
            parse_str($response, $params);
            $access_token=$params['access_token'];

                //echo($params['access_token']);

            $fbquery = fboauth_graph_query($fb_event_id."/", $access_token);

            dpm($fbquery);
        }
    }
}
于 2013-03-15T11:56:54.663 に答える