1

我已经为此奋斗了一天左右,但我无法找出错误在哪里。我正在为一个每月举办一次或两次大型聚会的朋友建立一个网站。我希望他能够在网站上创建一个事件并使用 fb php sdk api 将此事件发送到 facebook。

就在网站本身上创建活动而言,我的工作正常。我使用 php sdk 创建了一个事件。然而,将这两者结合起来就是麻烦的开始。理论上,当我想将事件发送到 facebook 时,我使用网站数据库上的事件 id 来收集信息,将其插入变量中,然后在创建 facebook 事件之后通过数组将这些变量发送到 api 调用。但是,我遇到了" OAuthException: (#100) Invalid parameter "错误。

考虑到连接到 fb 并获取访问令牌工作正常,我正在从数据库中检索正确的信息,这是我的代码:

// - image upload
    $createEventCover = http://www.mywebsite.com/flyer/flyer.jpg
    $createEvent[basename($createEventCover)] = "@".realpath($createEventCover); 


//  - textual data

    $createEvent = array(
        'access_token' => $accessToken,
        'name' => $createEventName,
        'start_time' => $createEventStartTime,
        'end_time' => $createEventEndTime,
        'description' => $createEventDescription,
        'location_id' => $createEventLocation_id,
        'privacy_type' => $createEventPrivacy_type
    );

// connect with api and create event.

try {
    $eventCreate = $FaceBook -> api("/me/events", "post", $createEvent);
    $facebookEventId = $eventCreate['id'];

    $cover['cover_url']  = $createEventCover;
    $eventUpdate = $facebook->api( "/" . $eventCreate['id'], "post", $cover );      

    //$eventUpdate = $FaceBook -> api( "/".$facebookEventId, "post", $createEventCover );       
    echo "<script>window.open('https://www.facebook.com/events/".$facebookEventId."/','_blank')</script>\n";

} catch( FacebookApiException $e){
    echo "//event creation error\n";
    echo "<br />\n";    
    echo "<br />".$e."<br />\n";
} 

在将信息发送到数组之前,我会回显所有内容,因此我知道我已将正确的数据发送到正确的位置,并且所有似乎都匹配。当我用文本数据而不是 php 变量填充数组时,例如"name" => "testevent"而不是"name" => $testevent,创建事件。一旦我使用“名称”=> $testevent,而不是"name" => "testevent",我得到错误。

我已经吞噬了谷歌并吃了一半的 stacoverflow 无济于事。有人可以帮我弄这个吗?

亲切的问候

根据@CBroe 的要求。我有一个 $createEvent 的 print_r:

Array
(
    [access_token] => *removed*
    [name] => testevent
    [start_time] => DateTime Object
    (
        [date] => 2015-05-19 23:30:00
        [timezone_type] => 3
        [timezone] => Europe/Berlin
    )

[end_time] => DateTime Object
    (
        [date] => 2015-05-19 04:00:00
        [timezone_type] => 3
        [timezone] => Europe/Berlin
    )

[description] => Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. 
[location_id] => 260864353982110
[privacy_type] => SECRET
)

这是事件创建现在失败并出现错误的时间:“OAuthException: (#100) Param event_info-start_time must be a valid time”

请注意,这只发生在我通过变量插入时间时。一旦我用文本日期替换变量,2015-05-19T23:30:00+0200就会定期创建事件,我正在使用将日期转换为 ISO8601

$FBcreateEventStartTime = new DateTime($createEventStartTime); 
$FBcreateEventStartTime -> format(DateTime::ISO8601);

对于 endtime 和在我在初始代码中显示的数组中,我当然已经替换了相同的

'start_time' => $createEventStartTime,
'end_time' => $createEventEndTime,

经过

'start_time' => $FBcreateEventStartTime,
'end_time' => $FBcreateEventEndTime,
4

2 回答 2

0

你有正确符号的时间吗?我在尝试以“hh:mm:ss”格式发送 start_time 时收到相同的错误 - 必须添加日期和时区偏移量(这也是必需的):YYYY-mm-ddThh:mm:ss+zz

https://developers.facebook.com/docs/graph-api/reference/user/#events

于 2013-11-19T12:29:03.150 回答
0

如果您的事件是通过使用文本数据而不是您生成的变量成功创建的,您是否可能试图传递由 FB 返回的变量,其值是数组键的一部分?类似于您的成功事件 ID 不是 $eventCreate,而是 $eventCreate['id']。也许尝试一一删除参数以确定有问题的参数,然后将其转储给我们,以便我们确定问题所在?

于 2014-03-17T10:14:43.783 回答