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

# Ajouter des permissions/autorisations pour appeler les API du fournisseur d’identité

> Décrit comment ajouter des permissions à votre connexion IdP.

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) + "*****MASKED*****";
          }
          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>;
};

Une fois qu’un utilisateur est connecté, vous pouvez obtenir son profil utilisateur, puis le `accessToken` associé pour appeler les API du fournisseur d’identité (<Tooltip href="/docs/fr-ca/glossary?term=idp" tip="Fournisseur d’identité (IdP)
Service de stockage et de gestion des identités numériques." cta="Voir le glossaire">IdP</Tooltip>) comme décrit dans [Appeler une API de fournisseur d’identité](/docs/fr-ca/authenticate/identity-providers/calling-an-external-idp-api).

Cependant, si vous recevez le message `Access Denied` lors de l’appel à l’API de l’IdP, vous n’avez probablement pas demandé les permissions correctes pour l’utilisateur lors de la connexion. Vous pouvez demander les permissions nécessaires de deux manières.

## En modifiant les paramètres du fournisseur d’identités

Pour configurer les permissions nécessaires de l’utilisateur, allez à [Auth0 Dashboard > Authentification > Social](https://manage.auth0.com/#/connections/social) et sélectionnez un IdP. Vous pouvez sélectionner les permissions requises dans l’écran de configuration.

Par exemple, si vous cliquez sur la connexion **Google/Gmail** vous pouvez configurer les permissions spécifiques à Google :

<Frame>
  <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/AzFg9TUnnX-9tz7j/docs/images/fr-ca/cdy7uua7fh8z/61ACa6hnMtO5aUjus0fCb7/5bd5b5176ba7b0a42dc421bf4911b382/2025-02-25_12-08-09.png?fit=max&auto=format&n=AzFg9TUnnX-9tz7j&q=85&s=9380bdbbeb79d7def49963c7f9989dfe" alt="Autorisations pour Google" width="904" height="655" data-path="docs/images/fr-ca/cdy7uua7fh8z/61ACa6hnMtO5aUjus0fCb7/5bd5b5176ba7b0a42dc421bf4911b382/2025-02-25_12-08-09.png" />
</Frame>

## En transmettant les permissions au point de terminaison Authorize

Vous pouvez également transmettre les permissions que vous souhaitez demander sous la forme d’une liste séparée par des virgules dans le paramètre `connection_scope` lors de l’appel du [point de terminaison authorize](/docs/fr-ca/api/authentication#login). Par exemple, si vous souhaitez demander les permissions `https://www.googleapis.com/auth/contacts.readonly` et `https://www.googleapis.com/auth/analytics` de Google, vous pouvez le faire avec le paramètre `connection` pour garantir que l’utilisateur se connecte avec son compte Google :

export const codeExample = `https://{yourDomain}/authorize
  ?response_type=id_token
  &client_id={yourClientId}
  &redirect_uri={https://yourApp/callback}
  &scope=openid%20profile
  &connection=google-oauth2
  &connection_scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fanalytics%2Chttps%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcontacts.readonly
  &nonce=abc`;

<AuthCodeBlock children={codeExample} language="text" lines />

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Veuillez noter que dans l’exemple de requête ci-dessus, la valeur du paramètre `connection_scope` est codée dans l’URL. La valeur décodée transmise à Google est la suivante : `https://www.googleapis.com/auth/analytics, https://www.googleapis.com/auth/contacts.readonly`
</Callout>
