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 :
update:current_user_identities
à partir de client-side codeupdate:users
à partir de server-side code
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
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?
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?