aboutsummaryrefslogtreecommitdiff
path: root/files/fr/mozilla/add-ons/webextensions/api/identity/launchwebauthflow/index.html
blob: ba6efa8b65a808295716c5201f3b5c95a04bf87e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
---
title: identity.launchWebAuthFlow
slug: Mozilla/Add-ons/WebExtensions/API/identity/launchWebAuthFlow
tags:
  - API
  - Add-ons
  - Extensions
  - Identity
  - Method
  - Reference
  - WebExtensions
  - launchWebAuthFlow
translation_of: Mozilla/Add-ons/WebExtensions/API/identity/launchWebAuthFlow
---
<div>{{AddonSidebar()}}</div>

<p>Effectue la première partie d'un flux <a href="https://oauth.net/2/">OAuth2</a> y compris l'authentification de l'utilisateur et l'autorisation du client.</p>

<p>Le seul paramètre obligatoire de cette fonction est l'URL d'autorisation du fournisseur de services, qui doit contenir un certain nombre de paramètres d'URL, y compris l'<a href="/fr/Add-ons/WebExtensions/API/identity#Getting_the_redirect_URL">URL de redirection</a> et l'<a href="/fr/Add-ons/WebExtensions/API/identity#Registering_your_add-on">ID client</a> de l'extension. Le fournisseur de service alors :</p>

<ul>
 <li>authentifie l'utilisateur auprès du fournisseur de services, si nécessaire (c'est-à-dire: s'ils ne sont pas déjà connectés)</li>
 <li>demande à l'utilisateur d'autoriser l'extension à accéder aux données demandées, si nécessaire (c'est-à-dire : si l'utilisateur n'a pas déjà autorisé l'extension)</li>
</ul>

<p>Notez que si aucune authentification ou autorisation n'est nécessaire, cette fonction se terminera silencieusement, sans interaction de l'utilisateur.</p>

<p>Cette fonction prend également un paramètre facultatif <code>interactif</code>: si cette valeur est omise ou définie sur false, le flux est forcé de se terminer en mode silencieux. Dans ce cas, si l'utilisateur doit s'authentifier ou autoriser, l'opération échouera tout simplement.</p>

<p>Cette fonction renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>: si l'authentification et l'autorisation ont abouti, la promesse est remplie avec une URL de redirection contenant un certain nombre de paramètres d'URL. En fonction du flux OAuth2 implémenté par le fournisseur de services en question, l'extension devra passer par d'autres étapes pour obtenir un code d'accès valide, qu'elle pourra ensuite utiliser pour accéder aux données de l'utilisateur.</p>

<p>S'il y a une erreur, la promesse est rejetée avec un message d'erreur. Les conditions d'erreur peuvent inclure :</p>

<ul>
 <li>l'URL du fournisseur de services n'a pas pu être atteinte</li>
 <li>l'ID du client ne correspond pas à l'ID d'un client enregistré</li>
 <li>l'URL de redirection ne correspond à aucune URL de redirection enregistrée pour ce client</li>
 <li>l'utilisateur ne s'est pas authentifié avec succès</li>
 <li>l'utilisateur n'a pas autorisé l'extension</li>
 <li>Le paramètre <code>interactif</code> a été omis ou faux, mais l'interaction de l'utilisateur aurait été nécessaire pour autoriser l'extension.</li>
</ul>

<h2 id="Syntaxe">Syntaxe</h2>

<pre class="brush: js">var authorizing = browser.identity.launchWebAuthFlow(
  details   // object
)
</pre>

<h3 id="Paramètres">Paramètres</h3>

<dl>
 <dt><code>details</code></dt>
 <dd><p><code>object</code>. Options pour le flux, contenant les propriétés suivantes :</p>
 <dl>
  <dt><code>url</code></dt>
  <dd>
  <p><code>string</code>. URL fournie par le fournisseur de services OAuth2 pour obtenir un jeton d'accès. Les détails de cette URL doivent figurer dans la documentation du fournisseur de services en question, mais les paramètres d'URL doivent toujours inclure :</p>

  <ul>
   <li>redirect_uri: ceci représente l'URI que votre extension est redirigée lorsque le flux est terminé. Il n'est pas nécessaire pour que le flux fonctionne du côté navigateur s'il correspond à l'URL de redirection générée. Voir <a href="/fr/Add-ons/WebExtensions/API/identity#Getting_the_redirect_URL">Obtenir l'URL de redirection</a>.</li>
  </ul>
  </dd>
  <dt><code>interactive</code> {{optional_inline}}</dt>
  <dd>
  <p><code>boolean</code>. Si omis ou <code>false</code>, force le flux à se terminer en silence, sans interaction de l'utilisateur.</p>

  <p>Si l'utilisateur est déjà connecté et a déjà accordé l'accès pour l'extension, <code>launchWebAuthFlow()</code> peut se terminer en mode silencieux, sans interaction de l'utilisateur. Sinon (si le fournisseur de services a besoin que l'utilisateur se connecte ou autorise l'extension), <code>launchWebAuthFlow()</code> invite l'utilisateur, c'est-à-dire que le flux sera interactif.</p>

  <p>Les extensions ne doivent pas lancer de flux interactifs sauf en réponse à une action de l'utilisateur. Cependant, parfois les extensions veulent toujours accéder aux données de l'utilisateur sans une action directe de l'utilisateur (par exemple, imaginez une extension qui veut accéder aux données lorsque le navigateur se lance).</p>

  <p>TC'est le but de l'<code>interactif</code>: Si vous omettez <code>interactif</code> ou le définissez sur <code>false</code>, le flux est forcé de conclure en silence : si le fournisseur de services doit interagir avec l'utilisateur, le flux échouera tout simplement. Donc en règle générale: mettez <code>interactif</code> à <code>true</code> si vous lancez le flux en réponse à une action de l'utilisateur, et omettez le sinon.</p>
  </dd>
 </dl>
 </dd>
</dl>

<h3 id="Valeur_retournée">Valeur retournée</h3>

<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si l'extension est autorisée avec succès, elle sera remplie avec une chaîne contenant l'URL de redirection. L'URL inclura un paramètre qui est un jeton d'accès ou qui peut être échangé contre un jeton d'accès, en utilisant le flux documenté pour le fournisseur de services particulier. </p>

<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2>

<p>{{Compat("webextensions.api.identity.launchWebAuthFlow")}}</p>

<h2 id="Exemples">Exemples</h2>

<p>Cette fonction autorise une extension des données Google d'un utilisateur, conformément à la documentation disponible à l'adresse  <a href="https://developers.google.com/identity/protocols/OAuth2UserAgent">https://developers.google.com/identity/protocols/OAuth2UserAgent</a>. La validation du jeton d'accès renvoyé n'est pas affichée ici :</p>

<pre class="brush: js">function validate(redirectURL) {
  // validate the access token
}

function authorize() {
  const redirectURL = browser.identity.getRedirectURL();
  const clientID = "664583959686-fhvksj46jkd9j5v96vsmvs406jgndmic.apps.googleusercontent.com";
  const scopes = ["openid", "email", "profile"];
  let authURL = "https://accounts.google.com/o/oauth2/auth";
  authURL += `?client_id=${clientID}`;
  authURL += `&amp;response_type=token`;
  authURL += `&amp;redirect_uri=${encodeURIComponent(redirectURL)}`;
  authURL += `&amp;scope=${encodeURIComponent(scopes.join(' '))}`;

  return browser.identity.launchWebAuthFlow({
    interactive: true,
    url: authURL
  });
}

function getAccessToken() {
  return authorize().then(validate);
}</pre>

<p>{{WebExtExamples}}</p>

<div class="note"><p><strong>Note :</strong></p>

<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/identity"><code>chrome.identity</code></a>.</p>

<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p>
</div>