2012-05-11 69 views
0

我一直在努力從Facebook API拉朋友的生日,我已經能夠拉我的朋友的uid's,但是當我用其他任何東西替換uid請求(即姓名,性別,生日等),它打破了代碼。任何見解都將是一大幫助。謝謝通過Facebook API拉朋友的生日

<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> 

回答

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); 
    } 
} 
0

試試這個fql語句。請記住,不是每個人都會有他們的生日場地,如果他們有,讓你看到它。

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

你可以添加AND strlen(birthday_date) > 0上述FQL結束過濾掉不具有明顯的生日誰是朋友。

+0

感謝您的幫助,但它沒有幫助。這是非常令人沮喪的。我不得不從用戶表做出這個請求,但是,對嗎?我似乎可以將我自己的數據作爲用戶,但只要我嘗試獲取我的朋友的信息,它什麼都不做。我檢查了我的權限是我的應用程序,所有設置都已設置。 – DevUps

+0

您是否嘗試將[圖形API資源管理器](https://developers.facebook.com/tools/explorer)中的查詢作爲您的應用程序來查看是否有任何內容被返回?是的,'birthday_date'信息只在'user'表中。 – cpilko

+0

我剛剛在資源管理器中嘗試過您的查詢,但它工作正常,但它並未在我的實際站點上返回任何內容。 – DevUps

相關問題