Désassocier des comptes d’utilisateurs

Utilisez le point de terminaison Unlink a User Account (Dissocier un compte utilisateur) de Management API Auth0 ou la bibliothèque Auth0.js pour dissocier une identité du compte utilisateur cible, le transformant ainsi en un compte utilisateur distinct.

Le résultat du processus de dissociation est le suivant :

  • Le compte secondaire est supprimé du tableau des identités du compte principal.

  • Un nouveau compte utilisateur secondaire est créé.

  • Le compte secondaire ne contiendra aucune métadonnée.

Si votre objectif est de supprimer complètement l’identité secondaire, vous devez d’abord dissocier les comptes, puis supprimer le compte secondaire nouvellement créé.

Selon l’endroit d’où vous appelez le point de terminaison, utilisez l’une de ces deux permissions :

Le point de terminaison utilise les paramètres suivants :

Parameter Type Description
id string ID du compte d’utilisateur principal (obligatoire)
provider string Nom du fournisseur d’identité du compte secondaire lié (par exemple, google-oauth2)
user_id string Identifiant du compte secondaire lié (par exemple, la partie 123456789081523216417 après le | in google-oauth2|123456789081523216417)

Si votre instance comporte des utilisateurs provenant de plusieurs fournisseurs, vous pouvez également inclure [connection_name]| avant le user_id string pour nommer le fournisseur (par exemple, "user-id": "google-oauth2|123456789081523216417").

Exemple de réponse

[
  {
    "connection": "Initial-Connection",
    "user_id": "5457edea1b8f22891a000004",
    "provider": "auth0",
    "isSocial": false,
    "access_token": "",
    "profileData": {
      "email": "",
      "email_verified": false,
      "name": "",
      "username": "johndoe",
      "given_name": "",
      "phone_number": "",
      "phone_verified": false,
      "family_name": ""
    }
  }
]

Was this helpful?

/

Utiliser JWT à partir du compte principal

Pour dissocier des comptes, appelez Management API Dissocier un point de terminaison de compte utilisateur en utilisant le JWT du compte principal pour l’autorisation :

function unlinkAccount(secondaryProvider, secondaryUserId){
  var primaryUserId = localStorage.getItem('user_id');
  var primaryJWT = localStorage.getItem('id_token');
  $.ajax({
    type: 'DELETE',
    url: 'https://' + '{yourDomain}' + '/api/v2/users/' + primaryUserId +
         '/identities/' + secondaryProvider + '/' + secondaryUserId,
    headers: {
      'Authorization': 'Bearer ' + primaryJWT
    }
  }).then(function(identities){
    alert('unlinked!');
    showLinkedAccounts(identities);
  }).fail(function(jqXHR){
    alert('Error unlinking Accounts: ' + jqXHR.status + ' ' + jqXHR.responseText);
  });
}

Was this helpful?

/

Utilisez le jeton d’accès avec la permission update:users

Si vous devez dissocier deux ou plusieurs comptes utilisateur, appelez Management API Dissocier un point de terminaison de compte utilisateur en utilisant un Jeton d’accès à Management API avec la permission update:users.

function unlinkAccount(secondaryProvider, secondaryUserId) {
  var primaryUserId = localStorage.getItem('user_id');
  var primaryAccessToken = localStorage.getItem('access_token');

  // Uses the Access Token of the primary user as a bearer token to identify the account
  // which will have the account unlinked to, and the user id of the secondary user, to identify
  // the user that will be unlinked from the primary account.

  $.ajax({
    type: 'DELETE',
    url: 'https://' + AUTH0_DOMAIN +'/api/v2/users/' + primaryUserId +
         '/identities/' + secondaryProvider + '/' + secondaryUserId,
    headers: {
      'Authorization': 'Bearer ' + primaryAccessToken
    }
  }).then(function(identities){
    alert('unlinked!');
    showLinkedAccounts(identities);
  }).fail(function(jqXHR){
    alert('Error unlinking Accounts: ' + jqXHR.status + ' ' + jqXHR.responseText);
  });
}

Was this helpful?

/

Dissocier les comptes du code côté serveur

  1. Mettre à jour l’utilisateur en session avec le nouveau tableau d’identités (chacun représentant un compte utilisateur distinct).

const ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn();
const Auth0Client = require('../Auth0Client');
const express = require('express');
const router = express.Router();
...
router.post('/unlink-accounts/:targetUserProvider/:targetUserId',ensureLoggedIn, (req,res,next) => {
  Auth0Client.unlinkAccounts(req.user.id, req.params.targetUserProvider, req.params.targetUserId)
  .then( identities => {
    req.user.identities = req.user._json.identities = identities;
    res.send(identities);
  })
  .catch( err => {
    console.log('Error unlinking accounts!',err);
    next(err);
  });
});

Was this helpful?

/

  1. Appelez Dissocier un point de terminaison de compte utilisateur de Management API v2 en utilisant Jeton d’accès à Management API avec la permission update:users.

const request = require('request');

class Auth0Client {
  ...
  unlinkAccounts(rootUserId, targetUserProvider, targetUserId){
    return new Promise((resolve,reject) => {
      var reqOpts = {
        method: 'DELETE',
        url: 'https://{yourDomain}/api/v2/users/' + rootUserId +
            '/identities/' + targetUserProvider + '/' + targetUserId,
        headers: {
          'Authorization': 'Bearer ' + process.env.AUTH0_APIV2_TOKEN
        }
      };
      request(reqOpts,(error, response, body) => {
        if (error) {
          return reject(error);
        } else if (response.statusCode !== 200) {
          return reject('Error unlinking accounts. Status: '+ response.statusCode + ' ' + JSON.stringify(body));
        } else {
          resolve(JSON.parse(body));
        }
      });
    });
  }
}

module.exports = new Auth0Client();

Was this helpful?

/

En savoir plus