I am trying to consume Zoom’s API using PHP and Oauth2. I was able to connect to the aplication and get the token using the generic lib oauth2-client. But, when I try to make a simple request, I get an error, saying that the email is missing. This is my code:
<?php session_start(); require __DIR__ . '/vendor/autoload.php'; $provider = new LeagueOAuth2ClientProviderGenericProvider([ 'clientId' => 'meuclientid', 'clientSecret' => 'meuclientsecret', 'redirectUri' => 'http://localhost/teste_oauth2/', 'urlAuthorize' => 'https://zoom.us/oauth/authorize', 'urlAccessToken' => 'https://zoom.us/oauth/token', 'urlResourceOwnerDetails' => 'https://api.zoom.us/v2/users/me' ]); // If we don't have an authorization code then get one if (!isset($_GET['code'])) { $authorizationUrl = $provider->getAuthorizationUrl(); // Get the state generated for you and store it to the session. $_SESSION['oauth2state'] = $provider->getState(); // Redirect the user to the authorization URL. header('Location: ' . $authorizationUrl); exit; // Check given state against previously stored one to mitigate CSRF attack } elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { unset($_SESSION['oauth2state']); exit('Invalid state'); } else { try { // Try to get an access token using the authorization code grant. $accessToken = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); $request = $provider->getAuthenticatedRequest( 'GET', 'https://api.zoom.us/v2/users/email', $accessToken, ['email' => 'meuemail@gmail.com'] ); var_dump($provider->getResponse($request)); die('aqui'); } catch (LeagueOAuth2ClientProviderExceptionIdentityProviderException $e) { // Failed to get the access token or user details. echo $e->getMessage(); exit; } } ?>
As you can see, I am passing the email on the request. But I am getting the Fatal error: Uncaught GuzzleHttpExceptionClientException: Client error: GET https://api.zoom.us/v2/users/email resulted in a 400 Bad Request response: {“code”:300,”message”:”Email is required.”}
Can anyone help me?
Advertisement
Answer
You are using
['email' => 'meuemail@gmail.com']
which is not allowed in the function $provider->getAuthenticatedRequest
You need to pass it with the existing URL:
$request = $provider->getAuthenticatedRequest( 'GET', 'https://api.zoom.us/v2/users/email?email=meuemail@gmail.com', $accessToken );
I hope this helps..!!
Zoom API Reference: https://marketplace.zoom.us/docs/api-reference/zoom-api/users/useremail
OAuth Reference: https://github.com/thephpleague/oauth2-client