2012-03-02 4 views
0

좋아, 여기에는 많은 움직이는 부분이 있으므로 최대한 철저하게 노력하겠습니다.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에 양식을 제출 할 때마다, 그것은 대부분의 오류로 반환하지만 그것이 무엇인지 오류가 나에게 보여주지 않으며, 확실히 페이스 북에 게시하지 않습니다.

내가 누락 된 아이디어가 있습니까? 어떤 도움을 주시면 감사하겠습니다! 고맙습니다!

답변

0

줄을 추가하십시오. "우리가 여기 있습니다"; 마지막 try/catch 문 바로 앞에을 입력하여 지금까지이 작업을 수행하고 있는지 확인하십시오.

전에 도착하면 같은 것을 시도하십시오. echo $ e;.

+0

좋아, 그래서 나는 두 곳의 다른 장소에서 울리기를 시도했다. 내가 여기있다. 나는 "사용자가 $ user"이다. 두 사람 사이의 오른쪽 ($ 사용자) 진술 끝에, 나는 그것이 사용자를 데리러하지 않는다는 것을 알려주는 "The User is 0"을 얻습니다. 나는 또한 당신의 제안을 시도하고 try/catch 바로 전에 "우리가 여기에있다"라는 에코를 넣었습니다. –

+0

또한이 스크립트는 액세스하기 위해 로그인해야하는 페이지에 설정되어 있습니다. 그 점이 어떤 차이가 있을까요? 내 Facebook App 설정에서 "index.php"대신 "dashboard.php"라는 앱 URL을 사용합니다. Index.php는 로그인 페이지이며 로그인이 성공하면 dashboard.php로 이동합니다. 그게 아무것도 영향을 미치지 않을까요? –

+0

** dashbord.php **를 사용하는 것은 ** App Domain **에있는 한 확인해야하며 해당 페이지에 JavaScript SDK가 포함되어 있어야합니다. 어쩌면 ** 앱 ID ** 및 ** 비밀 **을 확인 하시겠습니까? –

관련 문제