3

我有一个使用 Facebook Graph API 创建事件的 PHP 表单 (index.php)。表单用于捕获用户输入,并将此数据 POST 回 API 以创建事件。这与本教程中解释的代码相同:http: //www.masteringapi.com/tutorials/how-to-create-facebook-events-using-graph-api/49/

结果是,它返回刚刚创建的事件的 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 

此代码效果很好,但我正在尝试修改此代码,以便 index.php 将数据发布到 $event_url 以创建事件,但会将您重定向到显示如下消息的确认页面:

“活动成功创建!单击此处访问您的活动”,单击“此处”会将您重定向到 Facebook 上的活动。

关于如何做到这一点的任何想法?

4

1 回答 1

0

更改为您网站上$event_url的页面并将其添加为表单上的隐藏字段。event_submitter.phpaccess_token

event_submitter页面应该获取$_POST数据,删除access_token(如果您使用 php SDK,您可以删除这部分),重新格式化其余$_POST数据,通过 cURL 将其发送到 Facebook API 并检查响应。

如果您得到正确的响应,则可以从中生成所需的输出。

于 2012-10-10T14:39:26.097 回答