identity.launchWebAuthFlow

Effectue la première partie d'un flux OAuth2 y compris l'authentification de l'utilisateur et l'autorisation du client.

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'URL de redirection et l'ID client de l'extension. Le fournisseur de service alors :

  • authentifie l'utilisateur aupr√®s du fournisseur de services, si n√©cessaire (c'est-√†-dire: s'ils ne sont pas d√©j√† connect√©s)
  • 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)

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

Cette fonction prend √©galement un param√®tre facultatif interactif: 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.

Cette fonction renvoie une Promise: 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.

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

  • l'URL du fournisseur de services n'a pas pu √™tre atteinte
  • l'ID du client ne correspond pas √† l'ID d'un client enregistr√©
  • l'URL de redirection ne correspond √† aucune URL de redirection enregistr√©e pour ce client
  • l'utilisateur ne s'est pas authentifi√© avec succ√®s
  • l'utilisateur n'a pas autoris√© l'extension
  • Le param√®tre interactif a √©t√© omis ou faux, mais l'interaction de l'utilisateur aurait √©t√© n√©cessaire pour autoriser l'extension.

Syntaxe

var authorizing = browser.identity.launchWebAuthFlow(
  details   // object
)

Paramètres

details
object. Options pour le flux, contenant les propriétés suivantes :
url

string. 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 :

  • 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 Obtenir l'URL de redirection.
interactive Facultatif

boolean. Si omis ou false, force le flux à se terminer en silence, sans interaction de l'utilisateur.

Si l'utilisateur est déjà connecté et a déjà accordé l'accès pour l'extension, launchWebAuthFlow() 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), launchWebAuthFlow() invite l'utilisateur, c'est-à-dire que le flux sera interactif.

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).

TC'est le but de l'interactif: Si vous omettez interactif ou le définissez sur false, 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 interactif à true si vous lancez le flux en réponse à une action de l'utilisateur, et omettez le sinon.

Valeur retournée

Une Promise. 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. 

Compatibilité du navigateur

BCD tables only load in the browser

Exemples

Cette fonction autorise une extension des donn√©es Google d'un utilisateur, conform√©ment √† la documentation disponible √† l'adresse  https://developers.google.com/identity/protocols/OAuth2UserAgent. La validation du jeton d'acc√®s renvoy√© n'est pas affich√©e ici :

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 += `&response_type=token`;
  authURL += `&redirect_uri=${encodeURIComponent(redirectURL)}`;
  authURL += `&scope=${encodeURIComponent(scopes.join(' '))}`;

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

function getAccessToken() {
  return authorize().then(validate);
}

Example extensions

Remerciements :

Cette API est basée sur l'API Chromium chrome.identity.

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.