좋아, 여기에는 많은 움직이는 부분이 있으므로 최대한 철저하게 노력하겠습니다.PHP/jQuery/Ajax로 페이스 북에 게시
시작하려면 내 사이트에 페이스 북에 동적으로로드 된 사진을 게시하도록 지정된 태그가 있습니다.
<a onclick=\"postToFacebook('"+photoURL+"');\"><img src='facebook-icon.png'/></a>
는이 링크는 다음과 같이 외모를 클릭 할 때 호출되는 자바 스크립트 함수를 벗었 :이게 무슨 코드가 않습니다 생성하는 사용자를 가능하게하는 작은 웹 양식을 오버레이 창을 채 웁니다
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);
}
사진에 대한 캡션을 입력 할 수있을뿐만 아니라 사진에 대한 약간의 설명을위한 텍스트 영역을 입력 할 수도 있습니다. 보시다시피 submit 링크를 누르면 submitFacebookPosting()이라는 다른 javascript 함수가 호출됩니다. 이 함수는 다음과 같습니다
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에 양식을 제출 할 때마다, 그것은 대부분의 오류로 반환하지만 그것이 무엇인지 오류가 나에게 보여주지 않으며, 확실히 페이스 북에 게시하지 않습니다.
내가 누락 된 아이디어가 있습니까? 어떤 도움을 주시면 감사하겠습니다! 고맙습니다!
좋아, 그래서 나는 두 곳의 다른 장소에서 울리기를 시도했다. 내가 여기있다. 나는 "사용자가 $ user"이다. 두 사람 사이의 오른쪽 ($ 사용자) 진술 끝에, 나는 그것이 사용자를 데리러하지 않는다는 것을 알려주는 "The User is 0"을 얻습니다. 나는 또한 당신의 제안을 시도하고 try/catch 바로 전에 "우리가 여기에있다"라는 에코를 넣었습니다. –
또한이 스크립트는 액세스하기 위해 로그인해야하는 페이지에 설정되어 있습니다. 그 점이 어떤 차이가 있을까요? 내 Facebook App 설정에서 "index.php"대신 "dashboard.php"라는 앱 URL을 사용합니다. Index.php는 로그인 페이지이며 로그인이 성공하면 dashboard.php로 이동합니다. 그게 아무것도 영향을 미치지 않을까요? –
** dashbord.php **를 사용하는 것은 ** App Domain **에있는 한 확인해야하며 해당 페이지에 JavaScript SDK가 포함되어 있어야합니다. 어쩌면 ** 앱 ID ** 및 ** 비밀 **을 확인 하시겠습니까? –