Вопросу 3 года, но, учитывая нынешнее мрачное состояние документации API CITRIX (теперь LogMeIn), я предлагаю следующий фрагмент в качестве возможного решения:
Очевидно, нам понадобятся данные ключа организатора и токена доступа для нашей учетной записи...
$organizer_key= '10000000000XXXXXXX';
$access_token = 'GwsiiPWaJbHIiaIiocxxxxxxxxxx';
Получите минимально необходимые поля для вебинара (например, из HTML-формы) и закодируйте данные в формате JSON...
$newRegFields = (object) array(
'firstName' => $_POST[ 'FirstName' ],
'lastName' => $_POST[ 'LastName' ],
'email' => $_POST[ 'Email' ],
);
$newRegistrantFields = json_encode( $newRegFields );
//echo '<br><br>' . $newRegistrantFields;
Получить вебинар...
$webinarID = preg_replace( "/[^0-9]/", "", $_POST[ "WebinarKey" ] );
Установите URL-адрес для LogMeIn API (опция resendConfirmation не требуется)...
$gtw_url = "https://api.citrixonline.com/G2W/rest/organizers/" . $organizer_key . "/webinars/" . $webinarID . "/registrants?resendConfirmation=false";
Отформатируйте наши заголовки POST...
$headers = array(
"HTTP/1.1",
"Accept: application/json",
"Content-Type: application/json",
"Authorization: OAuth oauth_token=$access_token",
"Content-Length: " . strlen( $newRegistrantFields )
);
Установите наши параметры cURL, убедившись, что мы указываем POST с CURLOPT_POST, 1 ...
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, $gtw_url );
curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_POST, 1 );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $newRegistrantFields );
$newRegistrants = curl_exec( $curl );
curl_close( $curl );
Наш вызов cURL вернулся с данными в формате JSON, будь то сообщение об ошибке сервера или подтверждение регистрации. Теперь превратим ответ в удобный ассоциативный массив...
$newRegistrantsArray = json_decode( $newRegistrants, true );
//echo '<br><br>' . $newRegistrants . '<br><br>';
//echo '<pre>'; print_r( $newRegistrantsArray ); echo '</pre>';
Если был возвращен ключ errorCode, регистрация провалилась. Все, что я здесь делаю, это беру фактическое описание ошибки с сервера и загружаю его, чтобы вернуться на вызывающую HTML-страницу, но это совершенно необязательно...
if( array_key_exists( 'errorCode', $newRegistrantsArray )) {
$form_data[ 'status' ] = false;
$form_data[ 'code' ] = $newRegistrantsArray[ 'description' ];
$form_data[ 'error' ] = 'E200';
//echo json_encode( $form_data );
//exit;
}
Теперь, если регистрация прошла успешно, сервер вернет что-то вроде...
(
[registrantKey] => 2.5022062212198E+18
[joinUrl] => https://global.gotowebinar.com/join/6552167171182613761/103193261
)
... и поэтому я просто проверяю, были ли возвращены эти ключи, и если да, то я знаю, что регистрация прошла успешно.
if( array_key_exists( 'registrantKey', $newRegistrantsArray ) && array_key_exists( 'joinUrl', $newRegistrantsArray ) ) {
$form_data[ 'status' ] = true;
$form_data[ 'code' ] = $_POST[ 'Email' ] . ' successfully registered with webinar';
$form_data[ 'error' ] = 'E300';
//echo json_encode( $form_data );
//exit;
}
person
Mac
schedule
16.03.2015