在我的应用程序页面上创建事件

时间:2011-09-13 22:43:13

标签: facebook-graph-api

我正在编写一个以这种方式工作的应用程序 1.询问用户对events_create,publish_stream的权限 2.获取相同的access_token 3.从表单中输入标题,日期,时间,位置(即所有输入),然后调用图形api / $ app_id / events以及访问令牌和发布日期

我希望这能在我的APPLICATION事件中创建一个事件,因此我使用$ app_id代替.... / me / events

但它在USER的墙上创建了一个事件???

我希望用户能够在我的墙上创建一个活动。它应该是一个事件,其所有者是应用程序,用户应该与他的联系人一起被邀请(如果他选择的话)......

基本上,我认为POST到/ $ app_id / events和/ me / events的工作方式相同,我认为不应该...我错过了什么?

提前致谢..

AC


HiShakyeb,

相同的结果......它只是在我的帐户中而不是应用程序中创建一个事件。

这是我正在使用的代码..

    $url = "https://graph.facebook.com/$app/events?" . $access_token; 
    $params = array();
    // Prepare Event fields
    foreach($_POST as $key=>$value)
    if(strlen($value))
        $params[$key] = $value;

$params['name']=mysql_real_escape_string($params['name']);
$params['description']=mysql_real_escape_string($params['description']);
$params['location']=mysql_real_escape_string($params['location']);

$params['end_time']=date('Y-m-d H:i:s', mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"))); 
$params['privacy_type']="SECRET";

   // Start the Graph API call
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$result = curl_exec($ch);
$decoded = json_decode($result, true);
curl_close($ch);

我还试过app / events?而不是$ app / events?

非常感谢...

2 个答案:

答案 0 :(得分:0)

使用Page Admin access token代表该应用程序页面执行操作。为此,请使用/me/accounts权限获取manage_pages。这将为您提供您可以访问的页面(包括应用程序的配置文件页面),以及用作该页面/应用程序的访问令牌。如果您使用该访问令牌,则会将事件创建为应用程序页面而不是用户。有关详细信息,请参阅Page object的Graph API文档。

答案 1 :(得分:0)

使用PHP-SDK,我会在自动后使用api调用在填写表单后在应用页中发布事件。

此处用户(您)拥有有效的APP access_token并管理应用/页面权限后的自动过程。要使用的令牌是您通过FBapp连接收到的APP令牌。

开始创建php-sdk对象

$connectparam = array();
$connectparam['appId'] = 'YOURAPPID';
$connectparam['secret'] = 'YOURAPPSECRET';
$connectparam['fileUpload'] = 'true';
$connectparam['cookie'] = 'true';
$facebook = new Facebook($this->connectparam);

构建事件信息

$FBcreateAnTestEvent = array();
$nowtime = date('Y-m-d H:i:s');
$FBcreateAnTestEvent['name'] = 'Test Event in myApp from me';
$FBcreateAnTestEvent['start_time'] = $nowtime;
$FBcreateAnTestEvent['privacy_type'] = 'SECRET';
$FBcreateAnTestEvent['description'] = 'This Event is created from my WebFBApp and is a testing Event creating by Qtronik from myWebApp';

自动创建活动

$resp = '<a href="'.$facebook->api('/me/events','POST',$FBcreateAnTestEvent).'">
Create a test event</a>';
echo $resp; 

什么时候回复php-sdk立即创建事件,所以最好将它放在ajax或动作链接页面中

对于FanPage使用FQL链接

如果您解析FBuser admin_pages并按 APPLICATION 字段过滤和/或按您的FBpage ID过滤,则可以获取此用户FBpages admin access_token's。当然,您需要manage_pages权限。然后你需要 admin_events 权限才能发布到FBfanPage。我使用GraphApi链接创建一个FanPageEvent,如下所示:

$pageAccessToken = $facebook->api('/' . $YOURPAGEID . '/?fields=access_token');
$resp = '<a href="https://graph.facebook.com/'.$pageAccessToken['id'].'/events
?access_token=' . $pageAccessToken['access_token'] . '
&method=POST
&name='.$FBcreateAnTestEvent['name'].'
&start_time='.$FBcreateAnTestEvent['start_time'].'
&location='.$FBcreateAnTestEvent['location'].')">
Create a test event</a>';

然后我有很多其他的事情可以用Ajax来处理它,但这是从一个网站管理方式向Facebook添加一个事件的两种方式......所有这一切都不是非常适合个人资料事件因此创建垃圾邮件FBpages和FBapp / FBwebapp更加困难。

  

我说法语,请原谅我可怜的英语......;)