3

Facebookアプリ(小さなマルチプレイヤーFlashゲームを埋め込んだPHPスクリプト)を古いFBMLから新しいiFrameタイプに書き直そうとしていますが、これは一種の動作です。

<?php

require_once('facebook.php');

define('FB_API_ID', '182820975103876');
define('FB_AUTH_SECRET', 'XXX');

$facebook = new Facebook(array(
            'appId'  => FB_API_ID,
            'secret' => FB_AUTH_SECRET,
            'cookie' => true,
            ));

if (! $facebook->getSession()) {
    printf('<script type="text/javascript">top.location.href="%s";</script>',
        $facebook->getLoginUrl(
                array('canvas'    => 1,
                      'fbconnect' => 0,
                      #'req_perms' => 'user_location',
        )));

} else {
    try {
        $me = $facebook->api('/me');

        $first_name = $me['first_name'];
        $city       = $me['location']['name'];
        $female     = ($me['gender'] != 'male');
        $fields     = $facebook->api('/me', array(
                          'fields' => 'picture',
                          'type'   => 'large'
                      ));
        $avatar     = $fields['picture'];

        # then I print swf tag and pass first_name;city;avatar to it

    } catch (FacebookApiException $e) {
        print('Error: ' . $e);
    }
}

?>

しかし、ユーザープロファイル画像を取得するための呼び出しにより、スクリプトで2番目のCURLフェッチが実行されると思いますが、これはおそらく回避できますか?また、古いRESTAPIではなく新しいGRAPHAPIを使用したいのですが、その呼び出しを書き直す方法がわかりません(そして、大きく直接的なユーザー画像を取得する必要があります)。

4

2 に答える 2

11

ユーザーIDがわかっている場合は、次を使用してください。

<img src="http://graph.facebook.com/<UID>/picture?type=large" />

また、そのURLを使用して、cURLを介してコンテンツを取得できることにも注意してください。必要に応じて、cURLを使用してリダイレクトを追跡し、最終的なURLを取得することもできます。

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 
    "http://graph.facebook.com/<UID>/picture?type=large");

curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);

$url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

curl_close($ch);

var_dump($url);
于 2011-05-06T16:01:52.403 に答える
5

2つのAPI呼び出しを行う代わりに、次のようなFQLを使用できます。

$result = $facebook->api(array(
    'method'=>'fql.query',
    'query'=>'SELECT uid,name,first_name,current_location,sex,pic_big FROM user WHERE uid=me()'
));

確かに、fql.queryこれはグラフ方式ではありませんが、それでもFQLを使用する方法です

于 2011-05-06T17:12:48.050 に答える