2012-01-06 7 views
0

私はこのスクリプトを完成させるほどに近づいています。目標は、私のファンページの壁の1つにイベントを投稿することです。このスクリプトは、効果的に正しいPAGEアクセストークンを取得していて、効果的にイベントをポストしていますが、それは私の個人的な壁にあります。PHPを使ってページウォールにイベントを投稿する - 適切なページ?

私には何が欠けていますか?それはすべてそこにあるようだが、明らかに何かが内側にあるか後方にある。

ご協力いただきありがとうございます。ここでは、コードです:オン

<?php 
    $app_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 
    $app_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 
    $my_url = "http://xxxxxxxxxxxxxxxxxxxxxx.com/testfiles/fbeventform.php"; 

//Going to get the PAGE access code 
//First to get USER Access Code 
    session_start(); 
    $code = $_REQUEST["code"]; 

    if(empty($code)) { 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
    $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" 
     . $_SESSION['state'] . "&scope=create_event&scope=manage_pages"; 

    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
    } 

    if($_REQUEST['state'] == $_SESSION['state']) { 
    $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); 
    $params = null; 
    parse_str($access_token, $params); 

    $graph_url = "https://graph.facebook.com/me?access_token=" 
     . $params['access_token']; 

    $user = json_decode(file_get_contents($graph_url)); 
    echo("Hello " . $user->name); 
    } 
    else { 
    echo("The state does not match. You may be a victim of CSRF."); 
    } 

    echo '<hr />' . $access_token; 

//Now, getting the PAGE Access token, using the user access token 

    $page_token_url = "https://graph.facebook.com/" . $page_id . "?fields=access_token&" . $access_token; 
    $response = file_get_contents($page_token_url); 

// Parse the return value and get the Page access token 
    $resp_obj = json_decode($response,true); 

    $page_access_token = $resp_obj['access_token']; 

    echo '<hr />' . $page_access_token; 

//Post the event--here's the form function 

if(!empty($_POST) && (empty($_POST['name']) || empty($_POST['start_time']) || empty($_POST['end_time']))) { 
    $msg = "Please check your inputs!"; 
} elseif(!empty($_POST)) { 
    $url = "https://graph.facebook.com/" . $page_id . "/events?" . $access_token; 
    $params = array(); 
    // Prepare Event fields 
    foreach($_POST as $key=>$value) 
     if(strlen($value)) 
      $params[$key] = $value; 

    // Check if we have an image 
    if(isset($_FILES) && !empty($_FILES['picture']['name'])) { 
     $uploaddir = './upload/'; 
     $uploadfile = $uploaddir . basename($_FILES['picture']['name']); 
     if (move_uploaded_file($_FILES['picture']['tmp_name'], $uploadfile)) { 
      $params['picture'] = "@" . realpath($uploadfile); 
     } 
    } 

    // Start the Graph API call 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
    $result = curl_exec($ch); 
    $decoded = json_decode($result, true); 
    curl_close($ch); 
    if(is_array($decoded) && isset($decoded['id'])) { 
     // Event created successfully, now we can 
     // a) save event id to DB AND/OR 
     // b) show success message AND/OR 
     // c) optionally, delete image from our server (if any) 
     $msg = "Event created successfully: {$decoded['id']}"; 
    } 
} 
?> 
    <form enctype="multipart/form-data" action="" method="post"> 
     <p><label for="name">Event Name</label><input type="text" name="name" value="a" /></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> 
    </body> 
    </html> 

答えて

0

あなた$url = "https://graph.facebook.com/" . $page_id . "/events?" . $access_token;

は、ITをだこの

$url = "https://graph.facebook.com/" . $page_id . "/events?access_token=" . $access_token;

+0

を試してみて、あなたがアクセストークンのためのクエリ文字列の名前を逃しています!これは実際には 'https://graph.facebook.com/ 'です。$ page_id。/ events?access_token ="。$ page_access_token; '、しかしpage_access_tokenは以前には動作しませんでした。それ!お元気です、ありがとう! –

+0

問題はありません、援助になるのはうれしいです:) – DMCS

関連する問題