Создайте событие Facebook, используя JQuery и график API программно - PullRequest
7 голосов
/ 08 июня 2011

Есть ли способ использовать функцию JQuery для программного создания события на странице Facebook пользователя?Я создал приложение, которое запрашивает у пользователя разрешения create_event через:

<input type="button" value="Add to Facebook" onclick="document.location='http://www.facebook.com/dialog/oauth?client_id=<AppID>&redirect_uri=<redirecturi>&scope=create_event,offline_access,manage_pages&response_type=token'">

, которое корректно возвращается на страницу перенаправления с параметрами access_token и expires_in.Страница использует следующий код для анализа данных (менее элегантно, но я просто пытаюсь заставить это работать в качестве теста)

<script>

$(document).ready(function(){
    var url = window.location.href;
    var fbParameters = url.substring(url.indexOf('#')+1,url.length);
    var accesstoken;    

    if(fbParameters.indexOf("access_token=")>=0){
        accesstoken = fbParameters.substring(fbParameters.indexOf("access_token=")+("access_token=").length,fbParameters.length);
        accesstoken=accesstoken.substring(0,accesstoken.indexOf('&'));
        console.log(accesstoken);
    }

    var params = {'access_token':accesstoken,'name':'test','location':'someplace','start_time':'1322719200'}

    $.getJSON('https://graph.facebook.com/me/events?callback=?',params,function(data){console.log(data)});

});

</script>

Я также пытался использовать JQuery $ .post итакже вручную вводится в URL, чтобы попытаться создать это тестовое событие.Это возвращает:

XMLHttpRequest cannot load https://graph.facebook.com/me/events?. Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.

Я также попытался изменить URL-адрес для / User ID / events вместо / me / events.Facebook продолжает возвращаться:

({
    "data": [

    ]
});

Если я удаляю «события» из URL, он получает доступ к информации о пользователе, как и ожидалось.Кто-нибудь знает, возможно ли то, что я пытаюсь сделать, на самом деле?Я чувствую, что упускаю что-то очевидное.

Ответы [ 2 ]

6 голосов
/ 08 июня 2011

Вызов функций API API REST не очень хорошо работает с чистым JQuery из-за той же политики происхождения (http://en.wikipedia.org/wiki/Same_origin_policy).

. Лучше использовать JavaScript SDK, предоставляемый Facebook,он создает скрытый iframe для выполнения задач в домене facebook и довольно хорошо передает события обратно на вашу страницу, решая все проблемы аутентификации и передачи событий.

Вы можете найти примеры кода, документацию и фрагменты кода.на веб-сайте разработчика Facebook (http://developers.facebook.com/docs/reference/javascript/) и здесь (http://developers.facebook.com/tools/console/)

Например, создание события выглядит следующим образом:

var event = {  
    name: 'Name of your event', 
    description: 'Description of your event',
    location: 'Location of event',                        
    start_time: Math.round(new Date().getTime()/1000.0), // Example Start Date
    end_time: Math.round(new Date().getTime()/1000.0)+86400 // Example End Date
};

FB.api('/me/events', 'post', event, function (result) {
    console.log(result); 
});
0 голосов
/ 08 июня 2011

Хорошо изучив ваш код, я обнаружил, что в переменной params вы используете «accesstoken», который должен быть «access_token». Также используйте $ .post, чтобы создать событие на Facebook. Также используйте стандартный формат даты / времени для «start_time». Дайте мне знать, если это работает.

...