2012-05-15 180 views
1

請別人幫我。我嘗試了近1個月...我想檢索消息和數據。即時通訊使用最新的FB API,我盡我所能我找不到最新的錯誤。此外,我不能retreive user_id ..我需要做任何回調函數?facebook user_id返回0總是

的應用網址:https://apps.facebook.com/greetingz/

這是我整個代碼

<?php 
    session_start(); 
    if(!empty($_REQUEST['request_ids'])) { 
    require_once('src/facebook.php'); 

    $config = array(); 
    $config["appId"] = "XXXXXXXX"; 
    $config["secret"] = "XXXXXXXXXXXX"; 
    $config["fileUpload"] = false; // optional 

    // Create our Application instance. 
    $facebook = new Facebook(array(
     'appId' => $config["appId"], 
     'secret' => $config["secret"], 
     'cookie' => true, 
    )); 

     $user_id= $facebook->getUser(); 

    if($user_id){ 
     try { 

      $app_token = $facebook->getAccessToken(); 

      $requests = explode(',',$_REQUEST['request_ids']); 
      foreach($requests as $request_id) { 

      $data = $facebook -> api('/'.$user_id.'/apprequests?'.$app_token); 

      //you will delete the request here 
      $delete_url = "https://graph.facebook.com/".$request_id."_".$user_id."?".$app_token."&method=delete"; 
      $result = file_get_contents($delete_url); 
     } 

     } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
     } 
    }else{ 
    ?> 

    <script> 
     var oauth_url = 'https://www.facebook.com/dialog/oauth/'; 
     oauth_url += '?client_id=XXXXXXXXXX'; 
     oauth_url += '&redirect_uri=' + encodeURIComponent('https://apps.facebook.com/greetingz/'); 
     oauth_url += '&scope=user_birthday,user_events' 
     window.top.location = oauth_url; 
    </script> 

    <?php 
    }; 
    } 

    else{ 


    ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <script src="http://connect.facebook.net/en_US/all.js"></script> 
    <script src="js/jquery-1.6.2.min.js" type="text/javascript" ></script> 
    <script src="Scripts/swfobject_modified.js" type="text/javascript"></script> 
    <link rel="stylesheet" type="text/css" href="css/style.css"/> 
    <title>Greetings</title> 

    </head> 

    <body> 

    <div align="center"> 
     <object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="664" height="626"> 
     <param name="movie" value="flash/Candle_jey.swf" /> 
     <param name="quality" value="high" /> 
     <param name="wmode" value="opaque" /> 
     <param name="swfversion" value="6.0.65.0" /> 
     <!-- This param tag prompts users with Flash Player 6.0 r65 and higher to download the latest version of Flash Player. Delete it if you don't want users to see the prompt. --> 
     <param name="expressinstall" value="Scripts/expressInstall.swf" /> 
     <!-- Next object tag is for non-IE browsers. So hide it from IE using IECC. --> 
     <!--[if !IE]>--> 
     <object type="application/x-shockwave-flash" data="flash/Candle_jey.swf" width="664" height="626"> 
      <!--<![endif]--> 
      <param name="quality" value="high" /> 
      <param name="wmode" value="opaque" /> 
      <param name="swfversion" value="6.0.65.0" /> 
      <param name="expressinstall" value="Scripts/expressInstall.swf" /> 
      <!-- The browser displays the following alternative content for users with Flash Player 6.0 and older. --> 
      <div> 
      <h4>Content on this page requires a newer version of Adobe Flash Player.</h4> 
      <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" width="112" height="33" /></a></p> 
      </div> 
      <!--[if !IE]>--> 
     </object> 
     <!--<![endif]--> 
     </object> 

    </div> 
    <div class="main"> 

    <div style="margin-left:300px; width:540px; margin:auto;"> 

    <table> 
    <tr> 
     <td> 
      <span style="font-size:18px;font-family:'Trebuchet MS', Arial, Helvetica, sans-serif; color:#603;">Greeting :</span> 
     </td> 
     <td> 
      <textarea type="text" name="message" id="msg" style="height:40px; width:350px;" ></textarea> 
     </td> 
     <td> 
      <input type="submit" value="Send" id="one" style="color:#CCC; background-color:#603; border:none; width:80px; height:40px;" 
      onclick="sendRequestViaMultiFriendSelector(); return false;"></span> 
     </td> 
    </tr> 
    </table> 
    </div>  

    <script> 
     FB.init({ 
     appId : 'XXXXXXXXXXX', 
     status : true, 
     cookie : true, 
     frictionlessRequests: true, 
     oauth: true 
     }); 


     function sendRequestViaMultiFriendSelector() { 

     FB.ui({method: 'apprequests', 
      message: $("#msg").val(), 

     },function getMultipleRequests(requestIds) { 
      FB.api('', {"ids": requestIds }, function(response) { 
      console.log(response); 
      }); 
     }, requestCallback); 
     } 

     function requestCallback(response) { 
     // Handle callback here 
     //var requestID = FB.api("/requestID", callback); 
     alert("Post was published."); 
     } 
    </script> 

    <div id="fb"> 

    </div> 
    <?php }?> 
    </div> 
    <script type="text/javascript"> 
    swfobject.registerObject("FlashID"); 
    </script> 

    </body> 
    </html> 
+0

這是我的整個代碼。請幫助其他人。 – Wazan

+0

$ user_id = $ facebook-> getUser();總是返回0 – Wazan

回答

3

好友詳細閱讀this,將解決你的問題,你需要分析signed_request,在signed_request你得到的USER_ID,你可以得到像這樣的簽名請求authResponse.signed_request

或者,您可以使用下面的Facebook圖形API方法代替這一行「$ user_id = $ facebook-> getUser();」在你的代碼中。

FB.login(function(loginResponse) { 
    if (loginResponse.authResponse) { 
     var userId = loginResponse.authResponse.userID; 

     // Work with userId here 
     var signed_request = loginResponse.authResponse.signedRequest; 
     //Work with signed request here 
    } 
    else { 
     //User cancelled login or did not fully authorize   
    } 
}); 
+0

我盡我所能,但我cudn't。如果我給我的Facebook登錄(它是爲了一個示例應用程序而創建的)和FTP,你可以檢查和電話。因爲我已經在這個近3周內堅持了下來。請.. – Wazan

+0

非常感謝你,我終於嘗試修復它。感謝您的Stackoverflow :) – Wazan

+2

Wazan,我有同樣的問題。你怎麼修好它的? – Shubo