phpにてZoomAPIを使う際,いろいろなサンプルを参考にしたけどうまくいかなかったので,うまくいった方法を記録.
トークンを取得→予約するユーザー情報を取得→Zoom会議を予約,という流れ.
ini_set( 'display_errors', true );
ini_set( 'max_execution_time', 0 );
// zoom API の情報
$admin_email = 'hogehoge@fugafuga.net';
// Account ID
$account_id = 'xxxxxxxxxx';
// API Key
$client_id = 'xxxxxxxxxx';
// API Secret
$client_secret = 'xxxxxxxxxx';
// Secret Token
$secret_token = 'xxxxxxxxxx';
// Verification Token
$verification_token = 'xxxxxxxxxx';
//// トークンの取得
// POST method を利用する
$auth = base64_encode( $client_id . ':' . $client_secret );
$headers = array(
'Authorization: Basic ' . $auth,
);
$params = array(
'grant_type' => 'account_credentials',
'account_id' => $account_id,
);
$url = 'https://zoom.us/oauth/token';
$curl = curl_init( $url );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $params );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
$response1 = curl_exec($curl);
$json1 = json_decode($response1, true);
curl_close($curl);
echo '<pre>';
print_r($json1);
echo '</pre>', PHP_EOL;
if ( empty($json1['access_token']) ) exit;
//// ユーザー一覧から $admin_email のユーザーを探す
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer ' . $json1['access_token'],
);
$url = 'https://api.zoom.us/v2/users';
$curl = curl_init( $url );
// curl_setopt( $curl, CURLOPT_POST, false );
// curl_setopt( $curl, CURLOPT_POSTFIELDS, $params );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
$response2 = curl_exec($curl);
$json2 = json_decode($response2, true);
curl_close($curl);
echo '<pre>';
print_r($json2);
echo '</pre>', PHP_EOL;
if ( empty($json2['users']) ) exit;
$user = array();
foreach ( $json2['users'] as $tmp ) {
if ( $tmp['email'] == $admin_email ) {
$user = $tmp;
break;
}
}
echo '<pre>';
print_r($user);
echo '</pre>', PHP_EOL;
if ( empty($user['id']) ) exit;
//// 会議を予約する
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer ' . $json1['access_token'],
);
$params = array(
'agenda' => 'APIによる会議自動生成テストのアジェンダ',
'topic' => 'APIによる会議自動生成テストのトピック',
'password' => '12345678',
'timezone' => 'Asia/Tokyo',
'start_time' => date('c', strtotime(date('Y/m/d 09:00:00', strtotime('tomorrow'))),
'duration' => 60,
'settings' => array(
'join_before_host' => true,
'audio' => 'both',
'auto_recording' => 'cloud',
'waiting_room' => false,
),
);
$url = 'https://api.zoom.us/v2/users/'.$user['id'].'/meetings';
$curl = curl_init( $url );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, json_encode( $params ) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
$response3 = curl_exec($curl);
$json3 = json_decode($response3, true);
curl_close($curl);
echo '<pre>';
print_r($response3);
print_r($json3);
echo '</pre>', PHP_EOL;