| Server IP : 139.59.63.204 / Your IP : 216.73.217.62 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ubuntu-s-1vcpu-1gb-blr1-01 6.8.0-110-generic #110-Ubuntu SMP PREEMPT_DYNAMIC Thu Mar 19 15:09:20 UTC 2026 x86_64 User : root ( 0) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Models\Zoom;
use App\Traits\ZoomMeetingTrait;
class ZoomController extends Controller
{
use ZoomMeetingTrait;
const MEETING_TYPE_INSTANT = 1;
const MEETING_TYPE_SCHEDULE = 2;
const MEETING_TYPE_RECURRING = 3;
const MEETING_TYPE_FIXED_RECURRING_FIXED = 8;
public function list(Request $request)
{
$path = 'users/me/meetings';
$response = $this->zoomGet($path);
$data = json_decode($response->body(), true);
$data['meetings'] = array_map(function (&$m) {
$m['start_at'] = $this->toZoomTimeFormat($m['start_time'], $m['timezone']);
return $m;
}, $data['meetings']);
return [
'success' => $response->ok(),
'data' => $data,
];
}
public function show($id)
{
$meeting = $this->get($id);
return view('meetings.index', compact('meeting'));
}
public function store(Request $request)
{
$this->create($request->all());
return redirect()->route('meetings.index');
}
public function update($meeting, Request $request)
{
$this->update($meeting->zoom_meeting_id, $request->all());
return redirect()->route('meetings.index');
}
public function destroy(ZoomMeeting $meeting)
{
$this->delete($meeting->id);
return $this->sendSuccess('Meeting deleted successfully.');
}
function callback(){
try {
$client = new \GuzzleHttp\Client(['base_uri' => 'https://zoom.us','verify'=>false]);
$response = $client->request('POST', '/oauth/token', [
"headers" => [
"Authorization" => "Basic ". base64_encode(env('ZOOM_API_KEY').':'.env('ZOOM_API_SECRET'))
],
'form_params' => [
"grant_type" => "authorization_code",
"code" => $_GET['code'],
"redirect_uri" => env('ZOOM_REDIRECT_URL')
],
]);
$token = json_decode($response->getBody()->getContents(), true);
$zoom = new Zoom();
$zoom->update_access_token(json_encode($token));
echo "Access token inserted successfully.";
} catch(Exception $e) {
echo $e->getMessage();
}
}
function create_meeting(Request $request) {
$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.zoom.us','verify'=>false]);
$email ="neha@gmail.com";
$zoom = new Zoom();
$arr_token = $zoom->get_access_token();
$accessToken = $arr_token->access_token;
try{
$response = $client->request('POST', '/v2/users', [
"headers" => [
"Authorization" => "Bearer $accessToken"
],
'json' => [
"user_info"=>[
"email"=> "neha@gmail.com",
"first_name"=> "Neha",
"last_name"=> "Kumari",
"display_name"=> "Neha Neha",
"password"=> "12345678",
"type"=> 1,
"feature"=>[
"zoom_phone"=> false,
"zoom_one_type"=> 16
],
"plan_united_type"=> "1"
],
"action" => "create",
],
]);
$data = json_decode($response->getBody());
dd($data);
} catch(Exception $e) {
if( 401 == $e->getCode() ) {
$refresh_token = $zoom->get_refresh_token();
$client = new \GuzzleHttp\Client(['base_uri' => 'https://zoom.us']);
$response = $client->request('POST', '/oauth/token', [
"headers" => [
"Authorization" => "Basic ". base64_encode(env('ZOOM_CLIENT_ID').':'.env('ZOOM_CLIENT_SECRET'))
],
'form_params' => [
"grant_type" => "refresh_token",
"refresh_token" => $refresh_token
],
]);
$zoom->update_access_token($response->getBody());
$this->create_meeting();
} else {
echo $e->getMessage();
}
}
try {
$response = $client->request('POST', '/v2/users/me/meetings', [
"headers" => [
"Authorization" => "Bearer $accessToken"
],
'json' => [
"assistants"=> [
"email"=> "nehakumar@gmail.com",
"id"=> "12324354"
],
"topic" => "Let's learn Laravel",
//"schedule_for"=>"nehakumar@gmail.com",
"allow_multiple_devices"=>true,
"email"=>"sonuma@gmail.com",//participents email
"type" => 2,
"start_time" => "2023-06-26T20:30:00",
"duration" => "30", // 30 mins
"password" => "123456"
],
]);
$data = json_decode($response->getBody());
dd($data);
echo "Join URL: ". $data->join_url;
echo "<br>";
echo "Meeting Password: ". $data->password;
} catch(Exception $e) {
if( 401 == $e->getCode() ) {
$refresh_token = $zoom->get_refresh_token();
$client = new \GuzzleHttp\Client(['base_uri' => 'https://zoom.us']);
$response = $client->request('POST', '/oauth/token', [
"headers" => [
"Authorization" => "Basic ". base64_encode(env('ZOOM_CLIENT_ID').':'.env('ZOOM_CLIENT_SECRET'))
],
'form_params' => [
"grant_type" => "refresh_token",
"refresh_token" => $refresh_token
],
]);
$zoom->update_access_token($response->getBody());
$this->create_meeting();
} else {
echo $e->getMessage();
}
}
}
function list_meetings($next_page_token = '') {
$zoom = new Zoom();
$arr_token = $zoom->get_access_token();
$accessToken = $arr_token->access_token;
$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.zoom.us','verify'=>false]);
$arr_request = [
"headers" => [
"Authorization" => "Bearer $accessToken"
]
];
if (!empty($next_page_token)) {
$arr_request['query'] = ["next_page_token" => $next_page_token];
}
$response = $client->request('GET', '/v2/users/me/meetings', $arr_request);
$data = json_decode($response->getBody());
if ( !empty($data) ) {
foreach ( $data->meetings as $d ) {
$topic = $d->topic;
$join_url = $d->join_url;
echo "<h3>Topic: $topic</h3>";
echo "Join URL: $join_url";
}
if ( !empty($data->next_page_token) ) {
list_meetings($data->next_page_token);
}
}
}
}