OAuthException:(#100)参数无效

时间:2013-09-28 19:58:07

标签: php facebook facebook-graph-api

我一直在争夺这一天大约一天,我无法找出错误的位置。 我正在为一个朋友建立一个网站,这个网站每月会举办一次或两次大型聚会。我希望他能够在网站上创建一个活动,并使用fb php sdk api将此活动发送到Facebook。

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

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

// - 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,填充数组时,会创建事件。我一使用“名字”=&gt; $ 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必须是有效时间”

请注意,只有当我通过变量插入时间时才会发生这种情况。一旦我用文本日期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,

2 个答案:

答案 0 :(得分:0)

你有正确的时间表吗?尝试以“hh:mm:ss”格式发送start_time时收到了同样的错误 - 必须添加日期和时区偏移量(这也是必要的): YYYY-MM-DDTHH:MM:SS + ZZ

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

答案 1 :(得分:0)

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