Zoom API : Server to Server OAuth の利用

icon API

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;
タイトルとURLをコピーしました