0

私は Facebook でイベントに参加したいのですが。リンクを使用して rsvp したいのですが、rsvping で見つけたすべての例はフォームで行われました。私は rsvp_event パーミッションとアクティブな access_token を持っています。私が直面している実際の問題は、http 投稿が成功した後のリダイレクトです。

<?php
     $redirect_uri = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
     $access_token = "ACCESS_TOKEN";
     $eid = "EVENT_ID";

     $rsvp_to_event = "https://graph.facebook.com/$eid/attending?method=post&access_token=$access_token&redirect_uri=$redirect_uri";
?>

<a href="<?php echo $rsvp_to_event; ?>">Join</a>

[参加] リンクをクリックすると、イベントに応答しますが、true を表示するページが表示されたままになります。rsvp が成功した後にページをリダイレクトするためのアイデアはありますか?

ありがとうございました。

4

2 に答える 2

2

cURL または を使用してその URL をクエリする必要があります。これfile_get_contents()は私のチュートリアルの例です。

<?php
$app_id = "APP_ID";
$app_secret = "APP_SECRET";
$my_url = "REDIRECT_URI";
$event_id = "EVENT_ID";
$rsvp_status = "";

$code = $_REQUEST["code"];

if(empty($code)) {
    $auth_url = "http://www.facebook.com/dialog/oauth?client_id="
    . $app_id . "&redirect_uri=" . urlencode($my_url)
    . "&scope=rsvp_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);

if( isset($_POST['rsvp']) ) {
    // Form submitted, call the Graph API to RSVP to the event
    $event_rsvp = "https://graph.facebook.com/$event_id/{$_POST['rsvp']}?method=post&" . $access_token;
    $rsvped = json_decode(file_get_contents($event_rsvp));
    if($rsvped) {
        $msg = "Your RSVP status is now <strong>{$_POST['rsvp']}</strong>";
        $rsvp_status = $_POST['rsvp'];
    }
}
if( !$rsvp_status ) {
    $query = "SELECT rsvp_status FROM event_member WHERE eid=$event_id AND uid=me()";
    $fql_url = "https://api.facebook.com/method/fql.query?"
        . "query=" . urlencode($query)
        . "&format=json"
        . "&" . $access_token;
    $fql_resp = json_decode(file_get_contents($fql_url));
    $rsvp_status = $fql_resp[0]->rsvp_status;
}
?>
<!doctype html>
<html>
<head>
<title>Create An Event</title>
<style>
label {float: left; width: 100px;}
input[type=text],textarea {width: 210px;}
#msg {border: 1px solid #000; padding: 5px; color: red;}
</style>
</head>
<body>
<?php if( isset($msg) ) { ?>
<p id="msg"><?php echo $msg; ?></p>
<?php } ?>
<form action="" method="post">
    <p>
        <label for="privacy_type">RSVP:</label>
        <input type="radio" name="rsvp" value="attending" <?php if($rsvp_status==="attending") echo "checked='checked'"; ?>/>Attending&nbsp;&nbsp;&nbsp;
        <input type="radio" name="rsvp" value="maybe" <?php if($rsvp_status==="maybe" || $rsvp_status==="unsure") echo "checked='checked'"; ?>/>Maybe&nbsp;&nbsp;&nbsp;
        <input type="radio" name="rsvp" value="declined" <?php if($rsvp_status==="declined") echo "checked='checked'"; ?>/>Not Attending&nbsp;&nbsp;&nbsp;
    </p>
    <p><input type="submit" value="RSVP to this event" /></p>
</form>
</body>
</html>

あなたは見ているべきです:

if( isset($_POST['rsvp']) ) {
    // Form submitted, call the Graph API to RSVP to the event
    $event_rsvp = "https://graph.facebook.com/$event_id/{$_POST['rsvp']}?method=post&" . $access_token;
    $rsvped = json_decode(file_get_contents($event_rsvp));
    if($rsvped) {
        $msg = "Your RSVP status is now <strong>{$_POST['rsvp']}</strong>";
        $rsvp_status = $_POST['rsvp'];
    }
}

上記のチュートリアルは、ユーザーがステータスを選択できる HTML フォームで構成されています。

于 2012-10-27T18:23:51.310 に答える
0

ほとんどのグラフ API エンドポイントは、ユーザーのブラウザーで直接呼び出されるようには設計されていませんが、バックエンド コードから呼び出すように設計されています (認証関連のものは例外である可能性があります)。

PHPページからこれらのリクエストを送信するために公式のPHP SDKを使用するか、PHPスクリプトからcurl拡張機能またはfile_get_contentsこれらのエンドポイントを使用して、ユーザーを自分でリダイレクトしてみてください。

于 2012-10-27T18:17:10.867 に答える