Создавайте события на фан-странице с помощью PHP - PullRequest
1 голос
/ 28 августа 2011

Мне нужно создать события на моей фан-странице. Но в настоящее время события отображаются на моей странице приложения, а не на моей фан-странице.

Можете ли вы дать мне некоторую информацию о том, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 09 января 2012

см. Ссылку http://pastebin.com/WSHCDLdr

это может вам помочь .........

PHP-КОД НА ЭТОЙ ССЫЛКЕ ДАЕТ НИЖЕ ........

<?php

require_once 'fb.php';

$pageId = "XXXXXXXXXXXXXXXXXXX";


define('API_SECRET', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');

$baseurl = "http://example.com";

$facebook = new Facebook(array(
    'appId'  => 'XXXXXXXXXXXXXXXXXX',
    'secret' => API_SECRET,
    'cookie' => true,
    'fileUpload' => true
));

$session = $facebook->getSession();

$me = null;

// Session based API call.
if ($session) {
    $uid = $facebook->getUser();
//  $me = $facebook->api('/me');
    $me = $facebook->api("/$pageId");
}

if ($me) {
    $logoutMe = $facebook->getLogoutUrl(array('next' => $base_url));
} else {
    $loginMe =  $loginUrl = $facebook->getLoginUrl(array(
        'display'   => 'popup',
        'next'      => $baseurl /*. '?loginsucc=1'*/,
//      'cancel_url'=> $baseurl . '?cancel=1',
        'req_perms' => 'create_event'
    ));
}

// if user click cancel in the popup window
if ($me && empty($_GET['session']) && empty($_COOKIE['fbs_' . API_SECRET])) {
    die("<script>window.close();</script>");
} elseif($me && !empty($_GET['session'])) {
    //only if valid session found and loginsucc is set, 
    //after facebook redirects it will send a session parameter as a json value
    //now decode them, make them array and sort based on keys
    $sortArray = get_object_vars(json_decode($_GET['session']));
    ksort($sortArray);
    $strCookie  =   "";
    $flag       =   false;
    foreach($sortArray as $key=>$item){
        if ($flag) $strCookie .= '&';
        $strCookie .= $key . '=' . $item;
        $flag = true;
    }

    //now set the cookie so that next time user don't need to click login again
    setCookie('fbs_' . API_SECRET, $strCookie);

    die("<script>window.close();window.opener.location.reload();</script>");
}

if ($me) {
    var_dump($me);
    //Path to photo (only tested with relative path to same directory)
//  $file = "end300.jpg";
    //The event information array (timestamps are "Facebook time"...)
    $time = time() + rand(1, 100) * rand(24, 64) * 3600;
    $event_info = array(
        "privacy_type" => "SECRET",
//      "name" => "Event Title "  . time(),
        "name" => "Test Event Title "  . time(),
        "host" => "Me ",
        "start_time" => $time,
        "end_time" => $time + 120,
        "location" => "London " . time(),
        "description" => "Event Description " . time()
    );
    //The key part - The path to the file with the CURL syntax
//  $event_info[basename($file)] = '@' . realpath($file);
    //Make the call - returns the event ID
//  var_dump($facebook->api('me/events','post',$event_info));
    var_dump($facebook->api("$pageId/events", 'post', $event_info));
?>
<a href="<?= $facebook->getLogoutUrl() ?>">Logout</a>
<?
} else { ?>
<script type="text/javascript">
    var newwindow;
    var intId;
    function login(){
        var  screenX    = typeof window.screenX != 'undefined' ? window.screenX : window.screenLeft,
            screenY    = typeof window.screenY != 'undefined' ? window.screenY : window.screenTop,
            outerWidth = typeof window.outerWidth != 'undefined' ? window.outerWidth : document.body.clientWidth,
            outerHeight = typeof window.outerHeight != 'undefined' ? window.outerHeight : (document.body.clientHeight - 22),
            width    = 500,
            height   = 270,
            left     = parseInt(screenX + ((outerWidth - width) / 2), 10),
            top      = parseInt(screenY + ((outerHeight - height) / 2.5), 10),
            features = (
            'width=' + width +
            ',height=' + height +
            ',left=' + left +
            ',top=' + top
            );
        newwindow=window.open('<?=$loginUrl?>','Login by facebook',features);
        if (window.focus) {newwindow.focus()}
        return false;
    }
</script>
Please login to Facebook and we will setup the event for you! <br />
<a href="#" onclick="login();return false;">
    <img src="http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif" border="0">
</a>
<?php } ?>
0 голосов
/ 28 августа 2011

Вам необходимо запросить разрешение manage_pages, которое даст вам доступ к токену "page".Вы можете получить этот токен, используя токен своего приложения и перейдя к

https://graph.facebook.com/userId/accounts?access_token={appToken} 

. Вы можете использовать его в дополнение к передаче поля владельца с идентификатором страниц с остальными данными вашего события.

Это должно создать событие для страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...