我正在尝试通过cron-job创建facebook事件。应该代表已经授予离线访问权限的facebook-connect-site用户创建事件。我有session_keys没有过期,但无法让它工作! 代表我的应用创建活动就像魅力一样,不是我想要的......
var_dump($event) with some randomly generated data:
'name' => string 'Try a athirst these and' (length=23)
'tagline' => string 'as it that he down the almost the' (length=33)
'description' => string 'that deeper but is sea whenever lead all a stream knowing robust bakehouses attending have am it pent for own quick' (length=115)
'category' => int 5
'subcategory' => int 52
'location' => string 'same as more the' (length=16)
'start_time' => int 1263630600
'end_time' => int 1263654000
'street' => string 'This Was Ships My 807' (length=21)
'phone' => string '49 692 324' (length=10)
'email' => string 'oeott@yahoo.com' (length=15)
'privacy_type' => string 'OPEN' (length=4)
<?php
$facebook = new Fb(FACEBOOK_API_KEY, FACEBOOK_API_SECRET);
// Set session key (that has been returned after offline-access has been granted)
$facebook->api_client->session_key = '5de03e54cb359f9asf3435365e-4588985454';
$eid = $facebook->api_client->events_create(json_encode($event));
?>
导致:“异常'FacebookRestClientException',消息'参数无效'”
有人能在那里挽救我的一天吗?
答案 0 :(得分:1)
假设您已要求获得create_events扩展权限,则应该可以使用新的Open Graph API和最新的PHP SDK执行此操作。代码将是这样的(未经测试):
$facebook = new Facebook(array(
'appId' => 'application ID',
'secret' => 'application secret',
'cookie' => true,
));
if ($session = $facebook->getSession()) {
try {
$event = $facebook->api("/me/events","post",array(
'title'=>'My Event Name',
'start_time'=>1263630600,
'end_time'=>1263654000,
// etc add your other event info here
));
} catch (FacebookApiException $e) {
error_log($e);
}
}
它应该作为CRON任务运行,我不知道它为什么不会。
答案 1 :(得分:1)
您确定需要使用会话密钥吗? 我一直在使用access_token,当访问被授予将项目发布到墙上并离线访问用户信息时提供。
编辑代码示例,对我来说非常适合将项目发布到用户墙(事件类似):
<?php
$ch = curl_init ('https://graph.facebook.com/me/feed');
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, array('access_token' => $user_access_token, 'message' => $message, 'link' => $link));
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$ret = curl_exec ($ch);
$ret = json_decode($ret);
if (!empty($ret->id)) {
return true;
}
return false;