通过facebook API拉朋友生日

时间:2012-05-11 15:58:07

标签: facebook facebook-graph-api facebook-fql

我一直在努力尝试从facebook API拉朋友生日,我已经能够拉我的朋友uid了但是当我用其他任何东西(即姓名,性别,生日等)替换uid请求时打破代码。任何见解都将是一个重要的帮助。感谢

 <div id="fb_login"> 

             <div id="fb-root"></div>
          <script>
            window.fbAsyncInit = function() {
              FB.init({
                appId      : 'APP_ID',
                status     : true, 
                cookie     : true,
                xfbml      : true,
                oauth      : true,
              });
            };
            (function(d){
               var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
               js = d.createElement('script'); js.id = id; js.async = true;
               js.src = "//connect.facebook.net/en_US/all.js";
               d.getElementsByTagName('head')[0].appendChild(js);
             }(document));
          </script>
        <div class="fb-login-button" scope="user_birthday,friends_birthday">Login with Facebook</div>



      <div id="bday_display">
      <?php
                $app_id = 'APP_ID';
                $app_secret = 'APP_SECERT';
                $my_url = 'MY_URL';


                $code = $_REQUEST["code"];



               //auth user
               if(empty($code)) {
                  $dialog_url = 'https://www.facebook.com/dialog/oauth?client_id=' 
                  . $app_id . '&redirect_uri=' . urlencode($my_url) ;
                  echo("<script>top.location.href='" . $dialog_url . "'</script>");
                }

                //get user access_token
                $token_url = 'https://graph.facebook.com/oauth/access_token?client_id='
                  . $app_id . '&redirect_uri=' . urlencode($my_url) 
                  . '&client_secret=' . $app_secret 
                  . '&code=' . $code;
                $access_token = file_get_contents($token_url);

                // Run fql query
                $fql_query_url = 'https://graph.facebook.com/'
                  . '/fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()'
                  . '&' . $access_token;
                $fql_query_result = file_get_contents($fql_query_url);
                $fql_query_obj = json_decode($fql_query_result, true);



                //display results of fql query
                echo '<pre>';
                print_r("query results:");
                print_r($fql_query_obj);
                echo '</pre>';





              ?>

    </div>

2 个答案:

答案 0 :(得分:0)

试试这个fql语句。请记住,不是每个人都会填充他们的生日场,或者如果他们有,让你可以看到它。

SELECT name, birthday_date FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me() )

您可以在上述FQL的末尾添加AND strlen(birthday_date) > 0,以过滤掉没有明显生日的朋友。

答案 1 :(得分:0)

这是有效的代码。感谢您的帮助cpilko。在你的帮助下我无法完成它。

        try{
            $fql    =   "SELECT name, birthday_date FROM user WHERE uid IN (SELECT uid2          FROM friend WHERE uid1=me())";
            $param  =   array(
                 'method'    => 'fql.query',
                'query'     => $fql,
                'callback'  => ''
            );
            $fqlResult   =   $facebook->api($param);
        }
        catch(Exception $o){
            d($o);
    }
}