【问题标题】:Sorting by birthday date my friend list in Facebook API?在 Facebook API 中按生日日期排序我的朋友列表?
【发布时间】:2011-04-07 11:13:01
【问题描述】:

我正在创建自己的应用程序来显示即将到来的朋友的生日。我有权从 facebook 获取此日期,并且我将在我的网站上显示我所有的朋友及其出生日期。我唯一的问题是如何显示即。即将到来的前10个生日?我正在使用 $facebook->api('/me/friends?limit=10) 但不知道如何对它们进行排序。有人帮忙吗?我应该尝试对哪些代码进行排序?一些 facebook api 代码或 php 代码。如果是 php 那么也许你有一些提示如何做到这一点。干杯!

【问题讨论】:

  • 在 fql 中按问题检查此顺序:CLICK HERE
  • 这不是旧api吗?帖子大约是 4 年前的,所以也许他们不可靠。但我有一些想法,如果我有什么我会在这里分享通知你。谢谢

标签: facebook api sorting friend


【解决方案1】:

试试这个让它像你提到的那样工作:

$friends = json_decode($facebook->api('/me/friends?fields=birthday'));
$friends_birth = array();
foreach($friends->data as $value){
  if(isset($value->birthday->)){
    $dt = split("/",$value->birthday);
    $friends_birth[$value->id] = mktime(0,0,0,$dt[0],$dt[1], date("y"));
  }
}
asort($friends_birth);
echo print_r($friends_birth);

这将按生日对朋友进行排序...现在您可以使用此数据进行进一步的逻辑

【讨论】:

  • 我试试你的代码。但它显示错误,即“json_decode() 期望参数 1 为字符串”,无论这意味着什么(我真的不知道)。当我从我的 $facebook->api(/me/friends) 中删除 json_decode() 并添加到“friends?limi=5&fields=birthday”时,它会显示 5 个随机人。我认为“随机”是因为他们的生日不是即将到来的。哪里出错了?非常感谢您的帮助,但我需要更多;)等待您的回复。欢呼“爱夏尔马”
  • 删除 json_decode 后得到什么输出...可以发布吗...thanx
  • 代码已更新..请再试一次... :) 输出结果也请发布...
  • 错误仍然相同:警告:json_decode() 期望参数 1 为字符串,数组在第 49 行的 /home/mydomain_path/konekt/facebook_connect.php 中给出警告:为 foreach 提供的参数无效() 在 /home/mydomain_path/konekt/facebook_connect.php 第 51 行数组 () 1
  • 是的,首先我不知道这是不是你的错误,但第一个错误是:“if(isset($value->birthday->)){”。 if 以 -> 结尾。这是正确的?当我删除这个 -> 下一个错误是错误的 foreach:“为 foreach() 提供的参数无效”。我真的很感谢你的帮助。等待你的答复。干杯
【解决方案2】:

我自己解决了这个问题。非常简单的解决方案……也许太简单了,但效果很好。那是我的代码。也许它会在未来帮助某人;)

$fql_n    = "SELECT uid, name, birthday_date FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND strlen(birthday_date) != 0 ORDER BY birthday_date";

    $parame  =   array(
           'method'     => 'fql.query',
            'query'     => $fql_n,
          'callback'    => ''
    );
    $fqlResultt   =   $facebook->api($parame);
    $ile_dat = 0;

    $miesiace_slownie = array("01" => "jan", "02" => "feb", "03" => "mar", "04" => "apr", "05" => "may", "06" => "jun", "07" => "jul", "08" => "aug", "09" => "sep", "10" => "oct", "11" => "nov", "12" => "dec");
    if($fqlResultt){
        foreach($fqlResultt as $ress){
            $data = date("m/d");
            list($fb_m,$fb_d) = explode("/", $ress['birthday_date']);
            $fb_date = $fb_m."/".$fb_d;
            if($data<=$fb_date) { ?>
                <div class="fb_birthday_fr">
                    <span class="fb_brt_day"><?php echo $fb_d . ' ' . $miesiace_slownie[$fb_m]; ?></span>
                    <span class="fb_brt_fr"><?php echo $ress['name']; ?></span>
                </div>
                <?php
                $ile_dat++;
                if($ile_dat == 6) break;
            }


        }
    }

$miesiace_slownie 是一个数组,用于将来自 facebook 的月份数据转换为本地语言类型。

欢呼,非常感谢 ^Love Sharma 给予的帮助。啤酒给你;)

【讨论】:

  • @Love Sharma 我是 stockoverflow 的新手。这是费率吗?如果是这样,我给 +1 ;)
  • 别这样... :) 没有问题... 你没有足够的积分来做那个... :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多