2012-05-15 211 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