2012-10-10 2 views
3

페이스 북 그래프 API를 사용하여 이벤트를 만드는 PHP 폼 (index.php)이 있습니다. 양식은 사용자 입력을 캡처하는 데 사용되며이 데이터는 API에 다시 게시되어 이벤트를 만듭니다. 이것은이 튜토리얼에서 설명한 코드와 동일합니다. http://www.masteringapi.com/tutorials/how-to-create-facebook-events-using-graph-api/49/그래프 Api에서 반환 된 데이터를 구문 분석하는 방법

방금 ​​생성 한 이벤트의 ID를 반환합니다.

<?php 

    $app_id = "APP_key"; 
    $app_secret = "APP_secret"; 
    $my_url = "URL"; 

    $code = $_REQUEST["code"]; 

    if(empty($code)) { 
    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) 
    . "&scope=create_event"; 
    echo("<script>top.location.href='" . $auth_url . "'</script>"); 
    } 

    $token_url = "https://graph.facebook.com/oauth/access_token?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) 
    . "&client_secret=" . $app_secret 
    . "&code=" . $code; 
    $access_token = file_get_contents($token_url); 

    $event_url = "https://graph.facebook.com/me/events?" . $access_token; 

    ?> 

    <style> 
    label {float: left; width: 100px;} 
    input[type=text],textarea {width: 210px;} 
    </style> 
    </head> 
    <body> 

    <div id="inputForm"> 
    <form enctype="multipart/form-data" action="<?php echo $event_url; ?>" method="post"> 
    <p><label for="name">Event Name</label><input type="text" name="name" value="" /></p> 
    <p><label for="description">Event Description</label><textarea name="description"></textarea></p> 
    <p><label for="location">Location</label><input type="text" name="location" value="" /></p> 
    <p><label for="">Start Time</label><input type="text" name="start_time" value="<?php echo date('Y-m-d H:i:s'); ?>" /></p> 
    <p><label for="end_time">End Time</label><input type="text" name="end_time" value="<?php echo date('Y-m-d H:i:s', mktime(0, 0, 0, date("m") , date("d")+1, date("Y"))); ?>" /></p> 
    <p><label for="picture">Event Picture</label><input type="file" name="picture" /></p> 
    <p> 
     <label for="privacy_type">Privacy</label> 
     <input type="radio" name="privacy_type" value="OPEN" checked='checked'/>Open&nbsp;&nbsp;&nbsp; 
     <input type="radio" name="privacy_type" value="CLOSED" />Closed&nbsp;&nbsp;&nbsp; 
     <input type="radio" name="privacy_type" value="SECRET" />Secret&nbsp;&nbsp;&nbsp; 
    </p> 
    <p><input type="submit" value="Create Event" /></p> 
    </form> 
    </div> 

    <?php 

이 코드는 잘 작동하지만, 나는 $ EVENT_URL 데이터가 이벤트를 생성하는 등의 index.php 게시물 것을이 코드를 수정하기 위해 노력하고있어,하지만 같은 메시지를 표시하는 확인 페이지로 리디렉션 :

"이벤트가 성공적으로 생성되었습니다! 이벤트에 액세스하려면 여기를 클릭하십시오."를 클릭하고 "여기"를 클릭하면 Facebook에 이벤트가 리디렉션됩니다.

이 작업을 수행하는 방법에 대한 의견이 있으십니까?

답변

0

$event_urlevent_submitter.php과 같은 페이지로 변경하고 양식에 숨겨진 필드로 access_token을 추가하십시오.

event_submitter 페이지에서 $_POST 나머지 데이터를 다시 포맷의 access_token (당신이 PHP SDK를 사용하는 경우이 부분을 제거 할 수) 빼내야의 $_POST 데이터를해야 cURL을 통해 페이스 북의 API에이를 보내고 검토 응답.

올바른 응답을 얻으면 원하는 출력을 생성 할 수 있습니다.

+0

고마워요! $ access_token 변수를 숨겨진 입력으로 전달했습니다. "event_submitter.php"에서 cURL을 사용하여 Facebook에 다시 게시하십시오. $ event_url = "https://graph.facebook.com/me/events?" . $ access_token; $ ch = curl_init(); curl_setopt ($ ch, CURLOPT_URL, $ event_url); curl_setopt ($ ch, CURLOPT_USERAGENT, "I-am-browser"); curl_setopt ($ ch, CURLOPT_HEADER, 0); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ ch, CURLOPT_TIMEOUT, 10); $ response = curl_exec ($ ch); curl_close ($ ch); var_dump (json_decode ($ response, true)); –

+0

그러나 빈 "데이터 []"배열을 반환하는 것을 볼 수 있습니다. cURL이 사용 된 방식에 문제가 있습니까? –

+0

URL을 올바르게 구성 했습니까? 거기에'access_token ='이 있어야합니까? 또한'$ access_token'을 연결하기 전에'; '을 얻은 것처럼 보입니다. cURL에 POST로 제출하거나 cURL 호출에서 POST 데이터를 포함하도록 cURL에 지시하는 위치가 표시되지 않습니다. 이 경우 GET 호출을하고 있으며 프로필에 현재 이벤트가없는 경우 빈 데이터가 표시됩니다. – cpilko

관련 문제