> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Installez et configurez le SDK Auth0-PHP, créez une application Auth0 et préparez votre projet PHP à authentifier des utilisateurs.

# Premiers pas avec Auth0-PHP

export const ReleaseStageNotice = ({feature, stage, plans, contact, terms}) => {
  const stageTextMap = {
    "beta": "bêta",
    "ea": "Accès anticipé"
  };
  const stageText = stageTextMap[stage] || "une phase de lancement du produit";
  const prsLink = "/docs/troubleshoot/product-lifecycle/product-release-stages";
  const linkify = (text, url) => {
    return <a href={url} target="_blank" rel="noreferrer" class="link">{text}</a>;
  };
  const includeDetails = (plans, contact, terms) => {
    const hasDetails = terms || plans || contact;
    if (!hasDetails) return null;
    return <span data-as="p">
            {plans && <>Cette fonctionnalité est offerte avec les forfaits {linkify(`${plans}`, "https://auth0.com/pricing")}. </>}
            {contact && "Pour y participer, communiquez avec " + contact + ". "}
            {terms && <>En utilisant cette fonctionnalité, vous acceptez les conditions applicables de l’essai gratuit énoncées dans le {linkify("Master Subscription Agreement", "https://www.okta.com/legal")} d’Okta.</>}
        </span>;
  };
  return <Warning>
            <span data-as="p">
                <strong>La fonctionnalité {feature} est en {linkify(stageText, prsLink)}.</strong>
            </span>

            {includeDetails(plans, contact, terms)}
        </Warning>;
};

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASQUÉ*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

<ReleaseStageNotice feature="Auth0 PHP SDK v9" stage="beta" />

Le SDK Auth0-PHP s’intègre à vos applications PHP et offre des fonctionnalités simples de connexion et d’inscription des utilisateurs. Il prend en charge les <Tooltip tip="Fournisseur d’identité (IdP) : service qui stocke et gère les identités numériques." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=identity+providers">fournisseurs d’identité</Tooltip> sociaux comme Facebook, Google ou X, ainsi que des fournisseurs d’entreprise comme Active Directory. Le SDK fournit des méthodes pratiques pour accéder aux endpoints d’authentification et de gestion d’Auth0.

Le dépôt Auth0-PHP est open source et [hébergé sur GitHub](https://github.com/auth0/auth0-PHP). Nous apprécions toutes les contributions, y compris les signalements de bogues, les propositions d’amélioration et les pull requests.

<div id="requirements">
  ## Prérequis
</div>

* PHP 8.2+
* [Composer](https://getcomposer.org/doc/00-intro.md)
* L’extension PHP `mbstring`
* Une implémentation de [client HTTP PSR-18](https://packagist.org/providers/psr/http-client-implementation)
* Une implémentation de [fabrique HTTP PSR-17](https://packagist.org/providers/psr/http-factory-implementation)
* Une implémentation de [messages HTTP PSR-7](https://packagist.org/providers/psr/http-message-implementation)

<div id="installation">
  ## Installation
</div>

L’installation de l’Auth0 PHP SDK nécessite [Composer](https://getcomposer.org/doc/00-intro.md#installation-linux-unix-macos), l’outil standard de gestion des dépendances pour PHP. Composer vous permet de déclarer les bibliothèques dont votre projet a besoin et les installe pour vous. Assurez-vous que Composer est installé et accessible à partir de votre shell avant de continuer.

Ensuite, exécutez la commande shell suivante dans le répertoire de votre projet pour installer le SDK :

```php lines theme={null}
composer require auth0/auth0-php
```

Cela créera un sous-dossier `vendor` dans votre projet et téléchargera toutes les dépendances nécessaires à l’utilisation du SDK PHP. Cela créera aussi le fichier `vendor/autoload.php`, nécessaire pour que le SDK fonctionne avec votre application, que nous importerons plus tard.

<div id="get-started">
  ## Pour commencer
</div>

Pour utiliser les API d’authentification et de gestion d’Auth0, vous aurez besoin d’un compte Auth0 gratuit et d’une application :

1. Allez à [auth0.com/signup](https://auth0.com/signup) et créez votre compte.
2. Une fois dans le Dashboard, accédez à **Applications**, puis à **Create Application**.
3. Donnez un nom à votre application, sélectionnez **Regular Web Application**, puis **Create**
4. Cliquez sur l’onglet **Settings** pour obtenir les identifiants requis ci-dessous. Pour en savoir plus, consultez [Application Settings](/docs/fr-ca/get-started/applications/application-settings).

<div id="configure-the-sdk">
  ## Configurer le SDK
</div>

Il est recommandé d’utiliser des [variables d’environnement](https://secure.php.net/manual/en/reserved.variables.environment.php) pour stocker et charger les identifiants sensibles d’Auth0. Vous éviterez ainsi de les coder en dur dans votre application. Créons un fichier `.env` à la racine du répertoire de notre projet pour y stocker les identifiants de l’application :

La façon la plus simple d’utiliser des variables d’environnement dans votre projet consiste à utiliser une bibliothèque comme [PHP Dotenv](https://github.com/josegonzalez/php-dotenv) avec un fichier `.env` local. Créez un fichier `.env` (assurez-vous qu’il n’est pas accessible au public et qu’il est exclu du contrôle de version) et ajoutez les valeurs suivantes :

export const codeExample = `# L'URL de notre Tenant Domain Auth0.
# Si nous utilisons un Custom Domain, assurez-vous plutôt d'utiliser cette valeur.
AUTH0_DOMAIN='{yourDomain}'

# Le Client ID de notre application Auth0.
AUTH0_CLIENT_ID='{yourClientId}'

# Le Client Secret de notre application Auth0.
AUTH0_CLIENT_SECRET='{yourClientSecret}'

# Une longue valeur secrète que nous utiliserons pour chiffrer les cookies de session. Vous pouvez la générer à l'aide de \`openssl rand -hex 32\` dans votre shell.
AUTH0_COOKIE_SECRET='VOIR LE COMMENTAIRE CI-DESSUS'

# L'URL de base de notre application.
AUTH0_BASE_URL='http://127.0.0.1:3000'`;

<AuthCodeBlock children={codeExample} language="php" />

Vous ne devriez jamais enregistrer ce fichier dans le contrôle de version ni le partager de façon non sécurisée. Son contenu doit être manipulé avec précaution et traité comme un mot de passe.
Comme PHP ne peut pas lire nativement notre fichier `.env`, vous devrez installer une bibliothèque PHP pour ce faire. Aux fins de cette documentation, nous utiliserons `vlucas/phpdotenv`, mais n’importe quelle bibliothèque "dotenv" fera l’affaire. Dans le répertoire de votre projet, exécutez la commande suivante dans le shell pour installer la bibliothèque :

```php lines theme={null}
composer require vlucas/phpdotenv
```

<div id="initialize-the-sdk">
  ## Initialiser le SDK
</div>

Nous sommes prêts à configurer et à initialiser une instance du SDK dans notre nouvelle application PHP. Commençons par créer le fichier source PHP que nous utiliserons pour cette démonstration, `index.php`, puis utilisons l’extrait de code suivant pour commencer :

```php lines theme={null}
<?php

// Importation du chargeur automatique Composer pour rendre les classes du SDK accessibles :
require 'vendor/autoload.php';

// Chargement de nos variables d'environnement depuis le fichier .env :
(Dotenv\Dotenv::createImmutable(__DIR__))->load();

// Instanciation de la classe Auth0 avec notre configuration :
$auth0 = new \Auth0\SDK\Auth0([
    'domain' => $_ENV['AUTH0_DOMAIN'],
    'clientId' => $_ENV['AUTH0_CLIENT_ID'],
    'clientSecret' => $_ENV['AUTH0_CLIENT_SECRET'],
    'cookieSecret' => $_ENV['AUTH0_COOKIE_SECRET'],
// L’élément `AUTH0_BASE_URL` doit correspondre exactement à l’URL de rappel configurée dans votre application Auth0.
    'redirectUri' => $_ENV['AUTH0_BASE_URL'],
]);
```

Félicitations ! Votre application est maintenant configurée et prête à être utilisée avec Auth0. Vous pouvez maintenant passer à la création d’une application exemple à l’aide de l’un de nos Quickstarts PHP. Choisissez le type d’application que vous souhaitez créer afin de suivre un Quickstart adapté à vos besoins :

* [Application Web PHP](/docs/fr-ca/quickstart/webapp/php/)
* [API backend PHP](/docs/fr-ca/quickstart/backend/php/)

<div id="learn-more">
  ## En savoir plus
</div>

* [Gérer le Login, le Logout et les profils utilisateur](/docs/fr-ca/libraries/auth0-php/auth0-php-basic-use)
* [Utiliser l’Authentication API](/docs/fr-ca/libraries/auth0-php/using-the-authentication-api-with-auth0-php)
* [Utiliser la Management API](/docs/fr-ca/libraries/auth0-php/using-the-management-api-with-auth0-php)
* [Valider les JWT (JSON Web Tokens)](/docs/fr-ca/libraries/auth0-php/validating-jwts-with-auth0-php)
* [Résoudre les problèmes liés à votre intégration Auth0-PHP](/docs/fr-ca/libraries/auth0-php/troubleshoot-auth0-php-library)
