require_once '../../vendor/autoload.php'; if (empty($_SESSION['oauthState'])) { echo 'State not found in session.'; return; } $expectedState = $_SESSION['oauthState']; // $_SESSION['oauthState'] = null; $providedState = $_GET['state']; if (empty($providedState) || $expectedState != $providedState) { echo 'The provided auth state did not match the expected value'; exit; } // Authorization code should be in the "code" query param $authCode = $_GET['code']; if (empty($authCode)) { echo 'CODE was not provided.'; exit; } include './config.php'; use Microsoft\Graph\Graph; use Microsoft\Graph\Model; // Initialize the OAuth client $oauthClient = new \League\OAuth2\Client\Provider\GenericProvider([ 'clientId' => $azureConfig['appId'], 'clientSecret' => $azureConfig['appSecret'], 'redirectUri' => $azureConfig['redirectUri'], 'urlAuthorize' => $azureConfig['authority'] . $azureConfig['authorizeEndpoint'], 'urlAccessToken' => $azureConfig['authority'] . $azureConfig['tokenEndpoint'], 'urlResourceOwnerDetails' => '', 'scopes' => $azureConfig['scopes'] ]); try { // Make the token request $accessToken = $oauthClient->getAccessToken('authorization_code', [ 'code' => $authCode ]); $graph = new Graph(); $graph->setAccessToken($accessToken->getToken()); $user = $graph->createRequest('GET', '/me?$select=displayName,mail,userPrincipalName') ->setReturnType(Model\User::class) ->execute(); $name = $user->getDisplayName(); $email = null !== $user->getMail() ? $user->getMail() : $user->getUserPrincipalName(); $email = strtolower(trim($email)); $resultado = mysqli_query($link_db, "select id from cadastros where email='$email' and status<>3"); $ip = getUserIP(); //Se não possui cadastro if(mysqli_num_rows($resultado) == 0){ $senha = md5(uniqid()); //Efetua o Cadastro $resultado2 = mysqli_query($link_db, "INSERT INTO `cadastros`(`origem`, `nome`, `email`, `senha`, `ip_cadastro`, `status` ) VALUES ('API', '$name', '$email', '$senha', '$ip', '1' )"); if(mysqli_affected_rows($link_db) > 0){ $id_cadastrado = mysqli_insert_id($link_db); $login_key = md5($id_cadastrado).md5(uniqid()); //registra log de cadastro $resultado_log_api = mysqli_query($link_db, "INSERT INTO `log_api`(`id_cadastro`, `login_key`, `tipo`, `token`, `nome`, `email`, `crm`, `uf_crm`, `celular`, `especialidade`) VALUES ('$id_cadastrado', '$login_key', 'Cadastro', '$token', '$nome', '$email', '$crm', '$crm_uf', '$telefone', '$especialidade')"); $numero_aprovado = 0; while ($numero_aprovado == 0) { $numero_sorte = sprintf("%05d", rand(1, 29999)); $resultado_existe = mysqli_query($link_db, "select id from cadastros where numero_sorte='$numero_sorte'"); //Se ninguém está utilizando este número if(mysqli_num_rows($resultado_existe) == 0){ $grava_numero = mysqli_query($link_db, "UPDATE `cadastros` SET numero_sorte='$numero_sorte' WHERE id='$id_cadastrado'"); $numero_aprovado = 1; } } $_SESSION['cliente_logado'] = $id_cadastrado; $_SESSION['nome_cliente'] = $name; // $_SESSION['cadastrar_foto'] = 'ok'; echo "$url_site"."api/v1/authentique/$login_key"; } echo '
';
            print_r([
                'nome' => $name,
                'email' => $email
            ]);
            exit;

        } catch (League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) {
            echo '
';
            print_r($e);
            return;
        }