2012-03-02 57 views
0

好吧,這裏有很多移動部件,所以我會盡量做到儘可能徹底。使用PHP/jQuery/Ajax發佈到Facebook

要開始,我的網站上有一個標籤,指定將一張動態加載的照片發佈到Facebook。

<a onclick=\"postToFacebook('"+photoURL+"');\"><img src='facebook-icon.png'/></a> 

的剝離下來時,這個鏈接被點擊看起來像這樣被調用javascript函數:

function postToFacebook(photoURL) { 
    contentCode += "<div id='overlay-col2'><input type='text' id='facebook-caption-textbox' name='facebook-caption-textbox' class='textbox-wide inactive' value='Caption'/>"; 
    contentCode += "<textarea id='facebook-message-textarea' name='facebook-message-textarea' class='textarea-wide inactive'>Say something about this photo...</textarea>"; 
    contentCode += "<a class='overlay-submit-btn' onclick=\"submitFacebookPosting('"+photoURL+"');\">Post to Facebook</a></div>"; 

    $("#overlay-body-content").empty().html(contentCode); 
} 

這段代碼的作用是創建填充覆蓋窗口的小網頁表單,使用戶爲照片輸入標題,以及textarea對照片說些小話。如您所見,當他們點擊提交鏈接時,會調用另一個JavaScript函數:submitFacebookPosting()。該函數如下所示:

function submitFacebookPosting(photoURL) { 
    var photoCaption = $("#facebook-caption-textbox").attr("value"); 
    var photoMessage = $("#facebook-message-textarea").val(); 

    $.ajax({ 
     url: 'postToFacebook.php', 
     type: 'POST', 
     data: ({photoURL:photoURL, photoCaption:photoCaption, photoMessage:photoMessage}), 
     success: function(data) { 
      if (data == "success") { 
       alert("Photo has been posted to your Facebook Wall."); 
      } else { 
       alert(data); 
      } 
     } 
    }); 
} 

最後,還有一個文件postToFacebook.php,它比較長。那內容是這樣的:

<?php 

    $photoURL = $_POST['photoURL']; 
    $caption = $_POST['photoCaption']; 
    $message = $_POST['photoMessage']; 

    $fbconfig['appid' ] = "--hidden--"; 
    $fbconfig['secret'] = "--hidden--"; 
    $fbconfig['baseurl'] = "http://www.jhublerdesign.com/proofStar/dashboard.php"; 
    $user = null; 

    try { 
     include_once "facebook.php"; 
    } catch(Exception $o) { 
     error_log($o); 
    } 

    $facebook = new Facebook(array(
     'appId' => $fbconfig['appid'], 
     'secret' => $fbconfig['secret'], 
     'cookie' => true, 
    )); 

    $user = $facebook->getUser();  
    $loginUrl = $facebook->getLoginUrl(
     array(
      'scope' => 'email,offline_access,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown', 
      'redirect_uri' => $fbconfig['baseurl'] 
     ) 
    ); 

    $logoutUrl = $facebook->getLogoutUrl(); 


    if ($user) { 
     try { 
      $user_profile = $facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
      d($e); 
      $user = null; 
     } 
    } 

    if ($user) { 
     try { 
      $publishStream = $facebook->api("/$user/feed", 'post', array(
       'message' => "This photo has been posted from ProofStar!", 
       'link' => $photoURL, 
       'picture' => $photoURL, 
       'name' => 'DSC_1234', 
       'description'=> $message 
      )); 
      echo "success"; 
     } catch (FacebookApiException $e) { 
      echo $e; 
     } 
    } 
?> 

因此,所有這一切說的 - 每當我提交表單到AJAX,它返回的錯誤,但不告訴我它是什麼錯誤,這最當然不會發布到Facebook。

任何想法我失蹤?任何幫助,將不勝感激!謝謝!

回答

0

添加行echo「we got here」;就在最後一次try/catch語句之前,以確保你獲得這麼多。

如果你到那裏試試echo $ e;

+0

好的,所以我嘗試在幾個不同的地方迴應,這裏是我爲你準備的:如果我回應「用戶是$ user」;在兩個if($ user)語句之間的權利,我得到一個「用戶是0」,它告訴我,它沒有拿起用戶。我也嘗試了你的建議,並在try/catch之前加上「我們到了這裏」回聲,但它沒有成功。 – 2012-03-02 04:57:32

+0

此外 - 此腳本設置在您必須登錄才能訪問的頁面上。這有什麼區別嗎?在我的Facebook應用程序設置中,我將應用程序網址設置爲「dashboard.php」,而不是「index.php」。 Index.php是登錄頁面,登錄成功後,您將轉到dashboard.php。這會影響到什麼嗎? – 2012-03-02 05:00:56

+0

使用** dashbord.php **應該可以,只要它在您的**應用程序域**中,並且您在該頁面上包含JavaScript SDK。也許檢查你的**應用程序ID **和**祕密**? – 2012-03-02 05:12:30