2011-06-07 68 views
7

有没有办法使用JQuery函数以编程方式创建用户Facebook页面的事件?我创建了通过询问用户的create_event权限的应用程序:以编程方式使用JQuery和图形api创建Facebook事件

<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 $。员额也试过,也手动输入URL以尝试创建此测试事件。这返回:

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

我也尝试修改URL /用户ID /事件而不是/我/事件。 Facebook不断返回:

({ 
    "data": [ 

    ] 
}); 

如果我从URL中删除“events”,它将按照预期访问用户信息。有谁知道我是否试图做到这一点实际上是可能的?我觉得我失去了一些明显的东西。

回答

6

由于源策略相同(http://en.wikipedia.org/wiki/Same_origin_policy),调用Graph API REST函数实际上并不适用于纯JQuery。

使用Facebook提供的JavaScript SDK是一个更好的主意,它创建一个隐藏的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

您无法通过Graph API创建事件。请参阅https://developers.facebook.com/docs/graph-api/reference/event – Meekohi 2017-07-25 21:53:09

0

看着你的代码后,我发现在params变量中你使用的“accesstoken”应该是“access_token”。还可以使用$ .post在Facebook上创建活动。 “start_time”也使用标准的日期/时间格式。让我知道它是否有效。

+0

访问令牌是一个错字当我用不同的方式来修复它时,我已经复制过了,大部分时间我都确认它是正确的。此外,Facebook将接受各种开始/结束时间条目并将其正确转换。在我的文章中,我描述了我如何尝试使用post和getJSON无济于事。问题实际上是您必须向Facebook发布表单,并且与上述答案中描述的问题具有相同的来源。 – 2011-06-09 00:20:51