Implémenter l'API Topics

Cette page explique les détails d'implémentation permettant aux appelants de l'API Topics d'observer et d'accéder aux sujets. Avant de commencer à implémenter votre solution, assurez-vous que votre navigateur est configuré correctement. Consultez la section "Présentation" pour en savoir plus sur la façon dont les appelants observent et accèdent aux sujets des utilisateurs.

Observer et accéder à Topics

Il existe deux façons d'observer et d'accéder aux thèmes d'un utilisateur: les en-têtes HTTP et l'API JavaScript.

En-têtes HTTP

Les en-têtes HTTP sont une approche recommandée pour observer et accéder aux sujets des utilisateurs. Cette approche peut être beaucoup plus performante que l'utilisation de l'API JavaScript. Lorsque vous utilisez des en-têtes HTTP, l'URL de la requête fournit le domaine enregistrable enregistré en tant que domaine de l'appelant. Il s'agit du domaine qui a observé les sujets de l'utilisateur.

Lancer la demande

Vous pouvez utiliser Topics avec des en-têtes de deux façons:

  • En accédant aux en-têtes de requête et de réponse sur une requête fetch() incluant une option browsingTopics: true.
  • En accédant aux en-têtes d'un élément iframe qui inclut un attribut browsingtopics.
Lancer une requête avec une récupération

À l'aide de fetch, l'appelant de l'API envoie une requête qui inclut {browsingTopics: true} dans le paramètre d'options. L'origine du paramètre d'URL de la requête de récupération est l'origine qui a observé les sujets.

   fetch('<topics_caller_eTLD+1>', { browsingTopics: true })
    .then((response) => {
        // Process the response
    });
Lancer une requête avec un iframe

Ajoutez l'attribut browsingtopics à l'élément <iframe>. Le navigateur inclura l'en-tête Sec-Browsing-Topics dans la requête de l'iframe, avec l'origine de l'iframe comme appelant.

   <iframe src="https://adtech.example" browsingtopics></iframe>

Interpréter les valeurs des en-têtes de requête

Pour les deux approches (récupérer et iframe), les thèmes observés pour un utilisateur peuvent être récupérés sur le serveur à partir de l'en-tête de requête Sec-Browsing-Topics. L'API Topics inclut automatiquement les thèmes utilisateur dans l'en-tête sur les requêtes fetch() ou iframe. Si l'API renvoie un ou plusieurs thèmes, une requête de récupération à l'origine à partir de laquelle les thèmes ont été observés inclura un en-tête Sec-Browsing-Topics comme suit:

   (325);v=chrome.1:1:1, ();p=P000000000

Si l'API ne renvoie aucun thème, l'en-tête se présente comme suit:

   ();p=P0000000000000000000000000000000

Les redirections seront suivies, et les thèmes envoyés dans la requête de redirection seront spécifiques à l'URL de redirection. Les valeurs d'en-tête Sec-Browsing-Topics sont remplies pour réduire le risque qu'un pirate informatique apprenne le nombre de sujets associés à un appelant en fonction de la longueur de l'en-tête.

Gérer la réponse côté serveur

Si la réponse à la requête inclut un en-tête Observe-Browsing-Topics: ?1, cela signifie que le navigateur doit marquer les sujets de la requête associée comme observés et inclure la visite de la page actuelle dans le calcul du thème d'époque suivant de l'utilisateur. Incluez l'en-tête Observe-Browsing-Topics: ?1 dans la réponse dans votre code côté serveur:

   res.setHeader('Observe-Browsing-Topics', '?1');
En-têtes de requête et de réponse pour définir et récupérer des sujets.
En-têtes pour l'iFrame et fetch().

Partager les sujets observés avec les partenaires

Étant donné que les SSP ne sont présents que du côté de l'éditeur, les DSP peuvent souhaiter partager les thèmes qu'elles observent sur les sites de l'annonceur avec leurs SSP partenaires. Pour ce faire, ils doivent envoyer une requête fetch() avec l'en-tête "topics" aux SSP à partir du contexte de premier niveau de l'annonceur.

const response = await fetch("partner-ssp.example", {
 browsingTopics: true
});

Observer et accéder à Topics avec JavaScript

La méthode document.browsingTopics() de l'API JavaScript Topics permet d'observer et de récupérer les centres d'intérêt d'un utilisateur dans l'environnement du navigateur : - Enregistrer l'observation:informe le navigateur que l'appelant a observé l'utilisateur accéder à la page actuelle. Cette observation contribue au calcul du thème de l'utilisateur pour l'appelant dans les futures époques. - Access Topics (Accès aux thèmes) : permet de récupérer les thèmes que l'appelant a déjà observés pour l'utilisateur. La méthode renvoie un tableau comportant jusqu'à trois objets de thème, un pour chacune des époques les plus récentes, dans un ordre aléatoire.

Nous vous recommandons de créer un fork de la démonstration de l'API JavaScript Topics et de l'utiliser comme point de départ pour votre code.

Disponibilité de l'API

Avant d'utiliser l'API, assurez-vous qu'elle est prise en charge et disponible:

 if ('browsingTopics' in document && document.featurePolicy.allowsFeature('browsing-topics')) {
    console.log('document.browsingTopics() is supported on this page');
 } else {
    console.log('document.browsingTopics() is not supported on this page');
 }

Intégrer un iFrame

Un iframe inter-origine doit être utilisé pour l'appel, car le contexte à partir duquel l'API est appelée permet de s'assurer que le navigateur renvoie les sujets appropriés à l'appelant. Incluez un élément <iframe> dans votre code HTML:

<iframe src="https://example.com" browsingtopics></iframe>

Vous pouvez également créer un iframe dynamiquement à l'aide de JavaScript:

 const iframe = document.createElement('iframe');
 iframe.setAttribute('src', 'https://adtech.example/');
 document.body.appendChild(iframe);

Appeler l'API depuis l'iFrame

 try {
   // Get the array of top topics for this user.
   const topics = await document.browsingTopics();
  
   // Request an ad creative, providing topics information.
   const response = await fetch('https://ads.example/get-creative', {
   method: 'POST',
   headers: {
    'Content-Type': 'application/json',
   },
   body: JSON.stringify(topics)
   })
  
   // Get the JSON from the response.
   const creative = await response.json();
  
   // Display ad.

 } catch (error) {
   // Handle error.
 }

Par défaut, la méthode document.browsingTopics() permet également au navigateur d'enregistrer la visite de la page actuelle telle qu'elle est observée par l'appelant, afin qu'elle puisse être utilisée plus tard dans le calcul des thèmes. Vous pouvez transmettre à la méthode un argument facultatif pour éviter l'enregistrement de la visite de la page: {skipObservation:true}.

 // current page won't be included in the calculation of topics:
 const topics = await document.browsingTopics({skipObservation:true});

Comprendre la réponse

Un maximum de trois thèmes est renvoyé: un ou zéro pour chacune des trois dernières semaines, selon que des thèmes ont été observés ou non. Seuls les thèmes observés par l'appelant pour l'utilisateur actuel sont renvoyés. Voici un exemple de résultat renvoyé par l'API:

 [{
'configVersion': chrome.2,
 'modelVersion': 4,
 'taxonomyVersion': 4,
 'topic': 309,
 'version': chrome.2:2:4
}]
  • configVersion: chaîne identifiant la version de configuration de l'algorithme de thèmes du navigateur.
  • modelVersion: chaîne identifiant le classificateur de machine learning utilisé pour déduire les thèmes.
  • taxonomyVersion: chaîne identifiant l'ensemble de thèmes utilisés par le navigateur.
  • topic: nombre identifiant le thème dans la taxonomie.
  • version: chaîne concaténant configVersion, taxonomyVersion et modelVersion. Les paramètres décrits dans ce guide et les détails de l'API (telle que la taille de la taxonomie, le nombre de thèmes calculés par semaine et le nombre de thèmes renvoyés par appel) sont susceptibles d'être modifiés à mesure que nous intégrons les commentaires de l'écosystème et itérons sur l'API.

Consultez la page Tester et mettre en ligne pour savoir à quoi vous attendre et comment utiliser les thèmes comme signal supplémentaire pour diffuser des annonces plus pertinentes.

Next steps

Learn how to deploy, test and scale Topics based solutions.
Learn about the tools available in Chrome to view Topics API information, understand how topics are assigned, and debug your implementation.

See also

Check out our resources to better understand the Topics API on the Web.