✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Como criar uma reunião com zoom usando API Zoom e PHP

698

Recentemente, estava trabalhando em um projeto em que precisava interagir com a API Zoom. No aplicativo do cliente, implementamos muitas coisas usando a API Zoom, como contas, faturamento, reuniões, grupos, relatórios, salas, etc. Embora tenhamos feito muitas coisas usando a API Zoom, neste tutorial irei me concentrar em como crie uma reunião usando a API Zoom e PHP.

Como todos sabemos, o Zoom é uma plataforma que é usada para teleconferência, trabalho à distância, educação a distância, etc. É popular entre as pessoas para conferências online, reuniões, webinars e outras coisas.

Aqueles que desejam criar uma reunião por meio da API Zoom precisam escolher OAuth ou JWT para interagir com suas APIs. OAuth e JWT (JSON web token) fornecem um alto nível de segurança para fazer interações com os serviços de terceiros. Neste tutorial, usaremos o processo OAuth e nos comunicaremos com a API Zoom por meio dele.

Você também pode verificar o tutorial Integração do Zoom com JWT em PHP.

Crie um aplicativo OAuth no Zoom

Depois de ter sua conta do Zoom, você precisa criar um aplicativo OAuth no Zoom usando as etapas abaixo.

  • Registre seu aplicativo no Zoom APP Marketplace.
  • Ao registrar um aplicativo, você receberá suas credenciais geradas. Aqui você precisa passar o URL de redirecionamento para OAuth e o URL da lista de permissões.
  • Na próxima etapa, insira as informações básicas sobre seu aplicativo.
  • Na guia, você pode, opcionalmente, habilitar alguns recursos adicionais, como Assinaturas de eventos e Assinaturas de bate-papo para o seu aplicativo.
  • Na guia ‘Escopos’, você precisa adicionar escopos relacionados ao seu aplicativo. Por exemplo, você pode adicionar um escopo para reuniões do Zoom.

Se você estiver no localhost, use o ngrok e gere a URL local. No meu caso, URLs ngrok para redirecionamento OAuth e URL da lista branca são mostrados abaixo.

Se você estiver enfrentando qualquer problema ao criar um aplicativo OAuth, consulte a documentação oficial do Zoom em Criar um aplicativo OAuth.

Instalação e configuração básicas

Não encontrei nenhuma biblioteca PHP que possa ser usada para interagir com a API Zoom. Fazendo pesquisas, consigo gerenciá-lo por meio da biblioteca Guzzle e da API Zoom REST. Instale a biblioteca Guzzle usando o comando:

composer require guzzlehttp/guzzle

Para interagir com a API Zoom REST, é necessário enviar um token de acesso. Vamos gerá-lo e armazená-lo no banco de dados. O token de acesso é válido por um curto período de tempo. Em nosso código, geraremos novamente o token de acesso em segundo plano para que o usuário não precise fazer o processo de autorização novamente.

CREATE TABLE `token` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `access_token` text NOT NULL,
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Como precisaremos buscar valores de token no banco de dados, precisamos escrever um código para ele. Crie um arquivo class-db.phpe adicione o código abaixo nele.

class-db.php

<?php
class DB {
    private $dbHost     = "DB_HOST";
    private $dbUsername = "DB_USERNAME";
    private $dbPassword = "DB_PASSWORD";
    private $dbName     = "DB_NAME";
  
    public function __construct(){
        if(!isset($this->db)){
            // Connect to the database
            $conn = new mysqli($this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName);
            if($conn->connect_error){
                die("Failed to connect with MySQL: ". $conn->connect_error);
            }else{
                $this->db = $conn;
            }
        }
    }
  
    public function is_table_empty() {
        $result = $this->db->query("SELECT id FROM token");
        if($result->num_rows) {
            return false;
        }
  
        return true;
    }
  
    public function get_access_token() {
        $sql = $this->db->query("SELECT access_token FROM token");
        $result = $sql->fetch_assoc();
        return json_decode($result['access_token']);
    }
  
    public function get_refersh_token() {
        $result = $this->get_access_token();
        return $result->refresh_token;
    }
  
    public function update_access_token($token) {
        if($this->is_table_empty()) {
            $this->db->query("INSERT INTO token(access_token) VALUES('$token')");
        } else {
            $this->db->query("UPDATE token SET access_token = '$token' WHERE id = (SELECT id FROM token)");
        }
    }
}

Certifique-se de substituir os espaços reservados por suas credenciais de banco de dados reais. A seguir, vamos gerar um token de acesso por meio do processo OAuth.

Gerar um token de acesso

O usuário pode criar um token de acesso para sua conta usando as credenciais do aplicativo e o processo OAuth. Crie um config.phparquivo, armazene as credenciais do aplicativo e redirecione a URL neste arquivo PHP. Inclua os outros ambientes, como classe de banco de dados e biblioteca de fornecedores, também da seguinte maneira.

config.php

<?php
require_once 'vendor/autoload.php';
require_once "class-db.php";
  
define('CLIENT_ID', 'YOUR_CLIENT_ID');
define('CLIENT_SECRET', 'YOUR_CLIENT_SECRET');
define('REDIRECT_URI', 'REDIRECT_URL_FOR_OAUTH');

Substitua os marcadores pelas credenciais do seu aplicativo e defina o mesmo URL de redirecionamento que você adicionou no aplicativo Zoom OAuth. No meu caso, o URL de redirecionamento é https://f2448150.ngrok.io/zoom/callback.php. Isso significa que no callback.phparquivo, temos que escrever o código que chama uma API Zoom, solicitar um token de acesso e armazená-lo no banco de dados.

callback.php

<?php
require_once 'config.php';
  
try {
    $client = new GuzzleHttpClient(['base_uri' => 'https://zoom.us']);
  
    $response = $client->request('POST', '/oauth/token', [
        "headers" => [
            "Authorization" => "Basic ". base64_encode(CLIENT_ID.':'.CLIENT_SECRET)
        ],
        'form_params' => [
            "grant_type" => "authorization_code",
            "code" => $_GET['code'],
            "redirect_uri" => REDIRECT_URI
        ],
    ]);
  
    $token = json_decode($response->getBody()->getContents(), true);
  
    $db = new DB();
  
    if($db->is_table_empty()) {
        $db->update_access_token(json_encode($token));
        echo "Access token inserted successfully.";
    }
} catch(Exception $e) {
    echo $e->getMessage();
}

Agora, vamos gerar um URL autorizado onde um usuário pode clicar e concluir o processo de autorização. Vou criar esta URL no index.phparquivo.

index.php

<?php
require_once 'config.php';
  
$url = "https://zoom.us/oauth/authorize?response_type=code&client_id=".CLIENT_ID."&redirect_uri=".REDIRECT_URI;
?>
  
<a href="<?php echo $url; ?>">Login with Zoom</a>

Execute o arquivo acima no navegador, clique no link ‘Login com Zoom’ e conclua o processo de autorização. Na autenticação bem-sucedida, você verá uma mensagem de sucesso e o token de acesso será armazenado em sua tokentabela. Se funcionar, podemos prosseguir e criar uma reunião com a API Zoom.

Criar uma reunião com zoom usando API de zoom

O Zoom está fornecendo um ponto de extremidade para a criação de uma reunião por meio de sua API REST. Você pode ler sobre isso em sua documentação. Requer o envio de uma solicitação POST para o endpoint fornecido junto com os parâmetros necessários.

O ponto de extremidade da API também requer que um token de acesso seja passado no cabeçalho de autorização. Como eu disse antes, o token de acesso tem uma vida curta e vamos regenerá-lo em segundo plano sem solicitar o processo de autenticação novamente.

Criei um create-meeting.phparquivo para enviar uma solicitação POST ao terminal. Também lidei com a condição de expiração do token e regenerando-o se expirado.

create-meeting.php

<?php
require_once 'config.php';
  
function create_meeting() {
    $client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
  
    $db = new DB();
    $arr_token = $db->get_access_token();
    $accessToken = $arr_token->access_token;
  
    try {
        $response = $client->request('POST', '/v2/users/me/meetings', [
            "headers" => [
                "Authorization" => "Bearer $accessToken"
            ],
            'json' => [
                "topic" => "Let's learn Laravel",
                "type" => 2,
                "start_time" => "2021-03-05T20:30:00",
                "duration" => "30", // 30 mins
                "password" => "123456"
            ],
        ]);
  
        $data = json_decode($response->getBody());
        echo "Join URL: ". $data->join_url;
        echo "<br>";
        echo "Meeting Password: ". $data->password;
  
    } catch(Exception $e) {
        if( 401 == $e->getCode()) {
            $refresh_token = $db->get_refersh_token();
  
            $client = new GuzzleHttpClient(['base_uri' => 'https://zoom.us']);
            $response = $client->request('POST', '/oauth/token', [
                "headers" => [
                    "Authorization" => "Basic ". base64_encode(CLIENT_ID.':'.CLIENT_SECRET)
                ],
                'form_params' => [
                    "grant_type" => "refresh_token",
                    "refresh_token" => $refresh_token
                ],
            ]);
            $db->update_access_token($response->getBody());
  
            create_meeting();
        } else {
            echo $e->getMessage();
        }
    }
}
  
create_meeting();

Se você notou o código, eu passei “2021-03-20T20: 30: 00" como um ‘start_time’. Isso significa que o horário da reunião será 20 de março de 2021, 20:30. O usuário deve passar o formato para ele em aaaa-MM-ddTHH: mm: ss. Para a chave ‘type’, passei o valor ‘2’, que é para uma reunião agendada. O usuário também precisa definir uma senha de reunião, que eu defini como ‘123456’.

Vá em frente e execute este código e você verá que uma reunião foi criada em sua conta do Zoom.

Listar reuniões de zoom

Escrevemos um código para a criação de reuniões Zoom. Usando este código, você pode criar quantas reuniões quiser. Depois disso, você pode desejar listar todas as reuniões em seu aplicativo.

O Zoom fornece uma API por meio da qual podemos buscar todas as nossas reuniões Zoom. Crie um arquivo list-meeting.phpe use o código abaixo que imprimirá todas as reuniões.

list-meeting.php

<?php
require_once 'config.php';
  
$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
  
$db = new DB();
$arr_token = $db->get_access_token();
$accessToken = $arr_token->access_token;
  
$response = $client->request('GET', '/v2/users/me/meetings', [
    "headers" => [
        "Authorization" => "Bearer $accessToken"
    ]
]);
 
$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";
    }
}

No código acima, estou imprimindo um tópico e URL de reuniões. Você também pode imprimir outras informações. Imprima a variável $datapara obter uma lista de informações disponíveis.

Obtenha participantes de reuniões anteriores

Assim que a reunião terminar, você pode obter uma lista de participantes usando a API Zoom. Recomenda-se chamar esta API apenas se você estiver em uma conta paga. Esta API específica requer uma conta paga. Se você tentar chamar essa API com uma conta gratuita, receberá um erro.

<?php
require_once 'config.php';
   
$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
   
$db = new DB();
$arr_token = $db->get_access_token();
$accessToken = $arr_token->access_token;
   
$response = $client->request('GET', '/v2/past_meetings/MEETING_ID/participants', [
    "headers" => [
        "Authorization" => "Bearer $accessToken"
    ]
]);
  
$data = json_decode($response->getBody());
if (!empty($data)) {
    foreach ($data->participants as $p) {
        $name = $p->name;
        $email = $p->user_email;
        echo "Name: $name";
        echo "Email: $email";
    }
}

Substitua o marcador MEETING_ID pelo ID da reunião anterior real. Na resposta, você receberá os nomes e emails dos participantes.

Excluir uma reunião

O usuário pode brincar com os endpoints da API Zoom, como listar, atualizar, excluir uma reunião. Tudo o que você precisa fazer é seguir suas diretrizes sobre o uso de terminais específicos. Por exemplo, você pode excluir uma reunião enviando uma solicitação DELETE para o endpoint da API. Para este endpoint, você precisa passar sua id de reunião conforme mostrado abaixo.

<?php
require_once 'config.php';
  
$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
  
$db = new DB();
$arr_token = $db->get_access_token();
$accessToken = $arr_token->access_token;
  
$response = $client->request('DELETE', '/v2/meetings/{meeting_id}', [
    "headers" => [
        "Authorization" => "Bearer $accessToken"
    ]
]);
 
if (204 == $response->getStatusCode()) {
    echo "Meeting is deleted.";
}

Espero que você saiba como criar uma reunião usando a API Zoom e PHP. Eu gostaria de ouvir seus pensamentos e sugestões na seção de comentários abaixo.

Artigos relacionados

Fonte de gravação: artisansweb.net

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação