1

PHPとFQLは初めてです。やり方はわかるのですが、コードがわかりません。ユーザーがボックスに反対の性別のみを表示するアプリケーションを作成します。

ユーザーの名前、性別、友達IDを取得しました。ここで、FQL を実行してすべての友人の性別を取得し、反対の性別の名前を に挿入するのに助けが必要です。

<?php  
    $fbuser = $facebook->api('/me');//getting users data
    $friends = $facebook->api('/me/friends'); //getting friends data (only gives id and name)
    $userName = $fbuser['name'];//getting users name
    $userGender =  $fbuser['gender'];//getting users gender

    $friendsId = array();//empyt array to insert friends id
    foreach ($friends['data'] as $value);{ //loop
        array_push($friendsId, $value['id']); // not sure if this correct

        $friendsGender = friendsGender ;//run FQL to get the friends gender using the id

        //conditional Statement, if users and friends gender is not same insert the friends name in <select>

?> 

以下を実行しましたが、うまくいきませんでした。スクリプトの 2 行目は正しいですか?

$friendsInfo = $facebook->api('/me/friends', array('fields' => 'id,name,gender'));
$friendsGender = $friendsInfo['gender'];
echo $friendsGender;
4

2 に答える 2

3

フレンドのデータは次の方法で取得できます。

foreach ($friends['data'] as $value){
    $friend = $facebook->api('/'+$value['id']);

しかし、それは非常に非効率的です。幸いなことに、別の解決策があります。Facebook に返すフィールドを指定できます。

$facebook->api('/me/friends', array('fields' => 'id,name,gender'));

PS。これはグラフ API 呼び出しです。fqlは別のものです

PPS。foreach ($friends['data'] as $value);{バグがあります - ブロックはループの外側/後にあります

于 2012-07-08T17:45:10.000 に答える
1

次のようなことを試してみてください。

<?php

$access_token = 'AABBCC...';
$param = array(
    'access_token'  => $access_token,
    'method'        => 'GET',
    'q'             => 'SELECT name, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())'
);

$fql = 'https://graph.facebook.com/fql?' . http_build_query($param);


$res = file_get_contents($fql);
$aRes = json_decode($res, 1); 

WHERE sex = "female" AND uid IN (..)クエリへの追加をフィルタリングすることもできます

于 2012-07-08T22:38:38.740 に答える