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。
任何想法我失蹤?任何幫助,將不勝感激!謝謝!
好的,所以我嘗試在幾個不同的地方迴應,這裏是我爲你準備的:如果我回應「用戶是$ user」;在兩個if($ user)語句之間的權利,我得到一個「用戶是0」,它告訴我,它沒有拿起用戶。我也嘗試了你的建議,並在try/catch之前加上「我們到了這裏」回聲,但它沒有成功。 – 2012-03-02 04:57:32
此外 - 此腳本設置在您必須登錄才能訪問的頁面上。這有什麼區別嗎?在我的Facebook應用程序設置中,我將應用程序網址設置爲「dashboard.php」,而不是「index.php」。 Index.php是登錄頁面,登錄成功後,您將轉到dashboard.php。這會影響到什麼嗎? – 2012-03-02 05:00:56
使用** dashbord.php **應該可以,只要它在您的**應用程序域**中,並且您在該頁面上包含JavaScript SDK。也許檢查你的**應用程序ID **和**祕密**? – 2012-03-02 05:12:30