1

私はこれと1日ほど戦っていますが、エラーがどこにあるのかわかりません。私は、この大きなパーティーを月に 1、2 回開く友人のためにウェブサイトを構築しています。私は彼がウェブサイトでイベントを作成し、fb php sdk api を使用してこのイベントを facebook に送信できるようにしたいと考えています。

ウェブサイト自体でイベントを作成するまではうまくいきました。私はphp sdkを使ってイベントを作成しました。ただし、これら 2 つを組み合わせると、問題が発生します。理論的には、イベントを Facebook に送信する場合、Web サイト データベースのイベント ID を使用して情報を収集し、それを変数に挿入してから、配列を介してこれらの変数を API 呼び出しに送信し、その後、Facebook イベントを作成する必要があります。ただし、" 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";
} 

情報を配列に送信する前に、すべてをエコーするので、正しいデータが正しい場所に送信されていることがわかり、すべてが一致しているように見えます。イベントが作成される"name" => "testevent"代わりに、php変数の代わりにテキストデータで配列を埋めると。"name" => $testevent,"name" => $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