Stockage de données utilisateur personnalisé
Si vous utilisez un stockage de données utilisateur personnalisé, Xsolla Login agit en tant qu’intermédiaire et toutes les données d’identification utilisateur sont stockées de votre côté. Xsolla Login passe les données d’authentification dans le jeton inclus dans l’en-tête des webhooks ainsi que dans leur corps.
- enregistrement utilisateur ;
- authentification par nom d’utilisateur et mot de passe ;
- authentification sans mot de passe par numéro de téléphone ;
- authentification sans mot de passe par e-mail ;
- authentification via les réseaux sociaux ;
- réinitialisation du mot de passe utilisateur.
POST
Xsolla ne parviennent pas à des URL telles que http://localhost:3000/my-webhook-endpoint
. Ngrok vous permet de créer un tunnel d’accès externe, vous offrant ainsi la possibilité de recevoir les requêtes Xsolla localement. Pour en savoir plus à ce sujet, consultez la documentation de ngrok.
Si vous testez l’intégration localement, les requêtes POST
Xsolla ne parviennent pas à des URL telles que http://localhost:3000/my-webhook-endpoint
. Ngrok vous permet de créer un tunnel d’accès externe, vous offrant ainsi la possibilité de recevoir les requêtes Xsolla localement. Pour en savoir plus à ce sujet, consultez la documentation de ngrok.Flux d'interaction
Vous pouvez utiliser le widget de connexion ou votre application, qui utilise les appels Login API, comme client. Le flux d’interaction entre le client et le serveur Xsolla Login est comme suit :
- Le client envoie des requêtes au serveur Xsolla Login. Le format des requêtes est décrit dans les endpoints JWT et Password.
- Le serveur Xsolla Login envoie des webhooks à votre serveur. L’en-tête comprend un JWT serveur avec le paramètre
“request_type”: “gateway_token”
. Pour configurer la validation du jeton, suivez ces instructions. Une partie des données d’identification utilisateur est passée dans le corps du webhook. - Pour confirmer la réception du webhook, votre serveur doit renvoyer :
- un code HTTP
200
,201
ou204
en cas de réponse positive ; - un code HTTP
400
avec une description du problème si l’utilisateur spécifié n’a pas été trouvé ou si une signature non valide a été passée. Votre gestionnaire de webhooks peut également renvoyer un code HTTP5xx
en cas de problèmes temporaires sur votre serveur.
- un code HTTP
- Le serveur Xsolla Login traite la réponse de votre serveur et renvoie le jeton d’autorisation au client.
- Le client traite la réponse.
Si vous souhaitez ajouter des informations sur l’utilisateur au JWT après son identification, renvoyez un objet JSON avec l’ensemble de paramètres souhaités dans le corps de la réponse. Cet objet sera enregistré dans le champ partner_data
du JWT.
- adresse e-mail ;
- pseudo ;
- date de naissance ;
- prénom ;
- nom ;
- ID utilisateur sur votre serveur.
Paramètre | Type | Description |
---|---|---|
attr_type | string | Définition du niveau d’accès de l’utilisateur aux attributs de service :
|
key | string | Nom de l’attribut utilisé pour identifier l’attribut utilisateur. Il doit être unique pour chaque utilisateur. Longueur maximale : 256 symboles. Vous pouvez utiliser des chiffres, des lettres latines, des traits d’union et des tirets bas. |
permission | string or null | Le type d’accès aux attributs utilisateur affecte la liste des attributs renvoyés par les méthodes :
Valeurs possibles : public ou private (valeur par défaut). |
read_only | string | Détermine si l’attribut est protégé contre les modifications. Par défaut, la valeur est false : les modifications des valeurs des attributs sont autorisées. |
value | string | Valeur de l’attribut utilisateur. Longueur maximale : 256 symboles. |
Enregistrement utilisateur
- Le client envoie la requête
POST
Register new user au serveur Xsolla Login. La requête doit inclure l'en-têteAuthorization: Bearer {JWT}
et les paramètres obligatoires suivants :- Le paramètre de requête
projectId
— ID du projet de Login dans le Compte éditeur ; - Les paramètres de corps suivants :
username
— nom d'utilisateur. Longueur autorisée : 3 à 255 caractères,password
— mot de passe d'utilisateur. Longueur autorisée : 6 à 100 caractères,email
— adresse e-mail de l'utilisateur. Longueur autorisée : 1 à 255 caractères.
- Le paramètre de requête
- Le serveur Xsolla Login envoie un webhook à l'URL de nouvel utilisateur. La réponse doit être dans le format décrit dans le flux d'interaction. Dans la réponse, vous pouvez spécifier une liste d'attributs utilisateur et/ou tout objet JSON nécessaire. L'objet JSON dans la réponse est enregistré dans le champ
partner_data
du JWT utilisateur.
Exemple de webhook :
http
- http
- curl
1POST https://your.hostname/your_registration_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{
6 "email":"j.smith@email.com",
7 "password":"123456",
8 "username":"j.smith@email.com"
9}
1curl --request POST \
2 --url 'https://your.hostname/your_registration_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json' \
5 --data '{"email":"j.smith@email.com","password":"123456","username":"j.smith@email.com"}'
Exemple de réponse à un webhook avec des attributs utilisateur :
- json
1{
2 "attributes": [
3 {
4 "attr_type": "server",
5 "key": "company",
6 "permission": "private",
7 "value": "facebook-promo"
8 },
9 {
10 "attr_type": "server",
11 "key": "custom-id",
12 "permission": "private",
13 "value": 48582
14 }
15 ]
16}
Exemple de réponse à un webhook avec un objet JSON :
- json
1{
2 "id": 123456,
3 "role": "scout"
4}
- Les données utilisateur sont enregistrées dans la base de données Xsolla tant que l'
email
est marqué comme non confirmé. L'utilisateur recevra un e-mail de confirmation de compte. - Si vous avez intégré le widget Login, l'utilisateur sera redirigé vers une page affichant le message suivant : Please confirm your account following the instructions we sent to {email}.
- Si l'inscription de l'utilisateur échoue, fournissez un message d'erreur qui s'affichera dans le widget d'authentification. Pour ce faire, dans la réponse à la requête de création d'utilisateur, passez l'objet
error
avec les informations suivantes :- Dans le paramètre
code
, spécifiez un code d'erreur, par exemple,011-002
; - Dans le paramètre
description
, fournissez le texte du message d'erreur.
- Dans le paramètre
- json
1{
2 "error": {
3 "code": "011-002",
4 "description": "<string>"
5 }
6}
Authentification par nom d'utilisateur et mot de passe
- Le client envoie la requête
POST
Auth by username and password au serveur Xsolla Login. La requête doit inclure l'en-têteAuthorization: Bearer {JWT}
et les paramètres obligatoires suivants :- Le paramètre de requête
projectId
— ID du projet de Login dans le Compte éditeur ; - Les paramètres de corps suivants :
username
— nom d'utilisateur. Longueur autorisée : 3 à 255 caractères,password
— mot de passe d'utilisateur. Longueur autorisée : 6 à 100 caractères.
- Le paramètre de requête
- Le serveur Xsolla Login envoie un webhook à l'URL de vérification utilisateur. La réponse doit être dans le format décrit dans ce flux d'interaction. Dans la réponse, vous pouvez spécifier une liste d'attributs utilisateur et/ou tout objet JSON nécessaire. L'objet JSON dans la réponse est enregistré dans le champ
partner_data
du JWT utilisateur.
Exemple de webhook à l’URL de vérification utilisateur :
http
- http
- curl
1POST https://your.hostname/your_authentication_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{
6 "email":"j.smith@email.com",
7 "password":"123456",
8 "username":"j.smith@email.com"
9}
1curl --request POST \
2 --url 'https://your.hostname/your_authentication_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json' \
5 --data '{"email":"j.smith@email.com","password":"123456","username":"j.smith@email.com"}'
Exemple de réponse à un webhook avec des attributs utilisateur :
- json
1{
2 "attributes": [
3 {
4 "attr_type": "server",
5 "key": "company",
6 "permission": "private",
7 "value": "facebook-promo"
8 },
9 {
10 "attr_type": "server",
11 "key": "custom-id",
12 "permission": "private",
13 "value": 48582
14 }
15 ]
16}
Exemple de réponse à un webhook avec un objet JSON :
- json
1{
2 "id": 123456,
3 "role": "scout"
4}
- Si l'authentification utilisateur échoue, fournissez un message d'erreur qui s'affichera dans le widget d'authentification. Pour ce faire, dans la réponse à la requête de création d'utilisateur, passez l'objet
error
avec les informations suivantes :- Dans le paramètre
code
, spécifiez un code d'erreur, par exemple011-002
; - Dans le paramètre
description
, fournissez le texte du message d'erreur.
- Dans le paramètre
- Le serveur Xsolla Login génère un JWT utilisateur.
- L'utilisateur est redirigé vers
login_url
avec un paramètre de requêtetoken
. Le paramètretoken
contient le JWT utilisateur.
Authentification sans mot de passe par numéro de téléphone
- Le client ouvre un formulaire d'authentification pour que l'utilisateur puisse entrer son numéro de téléphone.
- L'utilisateur entre son numéro de téléphone.
- Le client envoie la requête
POST
Start auth by phone number au serveur Xsolla Login. La requête doit inclure l'en-têteAuthorization: Bearer {JWT}
et les paramètres obligatoires suivants :- Le paramètre de requête
projectId
— ID du projet de Login dans le Compte éditeur ; - Le paramètre de corps
phone_number
— numéro de téléphone de l'utilisateur.
- Le paramètre de requête
- Le client affiche un champ permettant à l'utilisateur de saisir le code de vérification.
- L'utilisateur saisit le code de vérification reçu.
- Le client envoie la requête
POST
Complete auth by phone number au serveur Xsolla Login. La requête doit inclure l'en-têteAuthorization: Bearer {JWT}
et les paramètres obligatoires suivants :- Le paramètre de requête
projectId
— ID du projet de Login dans le Compte éditeur ; - Les paramètres de corps suivants :
code
— code de confirmation,phone_number
— numéro de téléphone de l'utilisateur,operation_id
— ID de code de confirmation.
- Le paramètre de requête
- S'il s'agit de la première autorisation de l'utilisateur, le serveur Xsolla Login envoie un webhook à l'URL de connexion sans mot de passe. La réponse doit être dans le format décrit dans le flux d'interaction. Dans la réponse, vous pouvez spécifier une liste d'attributs utilisateur et/ou tout objet JSON nécessaire. L'objet JSON que vous fournissez dans la réponse est enregistré dans le champ
partner_data
du JWT utilisateur. - Si l'authentification utilisateur échoue, fournissez un message d'erreur qui s'affichera dans le widget d'authentification. Pour ce faire, dans la réponse à la requête de création d'utilisateur, passez l'objet
error
avec les informations suivantes :- Dans le paramètre
code
, spécifiez un code d'erreur, par exemple011-002
; - Dans le paramètre
description
, fournissez le texte du message d'erreur.
- Dans le paramètre
http
- http
- curl
1POST https://your.hostname/your_phone_authentication_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{
6 "login": "+12025550140",
7 "type": "phone"
8}
1curl --request POST \
2 --url 'https://your.hostname/your_phone_authentication_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json' \
5 --data '{"login":"+12025550140","type":"phone"}'
Exemple de réponse à un webhook avec des attributs utilisateur :
- json
1{
2 "attributes": [
3 {
4 "attr_type": "server",
5 "key": "company",
6 "permission": "private",
7 "value": "facebook-promo"
8 },
9 {
10 "attr_type": "server",
11 "key": "custom-id",
12 "permission": "private",
13 "value": 48582
14 }
15 ]
16}
Exemple de réponse à un webhook avec un objet JSON :
- json
1{
2 "id": 123456,
3 "role": "scout"
4}
Authentification sans mot de passe par e-mail
- Le client ouvre un formulaire d'authentification pour que l'utilisateur puisse entrer son adresse e-mail.
- L'utilisateur entre son adresse e-mail.
- Le client envoie la requête
POST
Start auth by email au serveur Xsolla Login. La requête doit inclure l'en-têteAuthorization: Bearer {JWT}
et les paramètres obligatoires suivants :- Le paramètre de requête
projectId
— ID du projet de Login dans le Compte éditeur ; - Le paramètre de corps
email
— adresse e-mail de l'utilisateur.
- Le paramètre de requête
- Le client affiche un champ permettant à l'utilisateur de saisir le code de vérification.
- L'utilisateur saisit le code de vérification reçu.
- Le client envoie la requête
POST
Complete auth by email au serveur Xsolla Login. La requête doit inclure l'en-têteAuthorization: Bearer {JWT}
et les paramètres obligatoires suivants :- Le paramètre de requête
projectId
— ID du projet de Login dans le Compte éditeur ; - Les paramètres de corps suivants :
username
— nom d'utilisateur. Longueur autorisée : 3 à 255 caractères,code
— code de confirmation,email
— adresse e-mail de l'utilisateur,operation_id
— ID de code de confirmation.
- Le paramètre de requête
- S'il s'agit de la première autorisation de l'utilisateur, le serveur Xsolla Login envoie un webhook à l'URL de connexion sans mot de passe. La réponse doit être dans le format décrit dans le flux d'interaction. Dans la réponse, vous pouvez spécifier une liste d'attributs utilisateur et/ou tout objet JSON nécessaire. L'objet JSON que vous fournissez dans la réponse est enregistré dans le champ
partner_data
du JWT utilisateur. - Si l'authentification utilisateur échoue, fournissez un message d'erreur qui s'affichera dans le widget d'authentification. Pour ce faire, dans la réponse à la requête de création d'utilisateur, passez l'objet
error
avec les informations suivantes :- Dans le paramètre
code
, spécifiez un code d'erreur, par exemple011-002
; - Dans le paramètre
description
, fournissez le texte du message d'erreur.
- Dans le paramètre
Exemple de webhook :
http
- http
- curl
1POST https://your.hostname/your_email_authentication_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{
6 "email": "user@mail.com",
7 "type": "email"
8}
1curl --request POST \
2 --url 'https://your.hostname/your_email_authentication_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json' \
5 --data '{"email": "user@mail.com","type": "email"}'
Exemple de réponse à un webhook avec des attributs utilisateur :
- json
1{
2 "attributes": [
3 {
4 "attr_type": "server",
5 "key": "company",
6 "permission": "private",
7 "value": "facebook-promo"
8 },
9 {
10 "attr_type": "server",
11 "key": "custom-id",
12 "permission": "private",
13 "value": 48582
14 }
15 ]
16}
Exemple de réponse à un webhook avec un objet JSON :
- json
1{
2 "id": 123456,
3 "role": "scout"
4}
Authentification via les réseaux sociaux
Pour obtenir les données utilisateur lors de l’authentification via les réseaux sociaux, spécifiez Social Login URL dans les paramètres de votre projet de connexion dans le Compte utilisateur (section User database > Storage > Custom storage). Une requête contenant les données reçues du réseau social est envoyée à cette URL.
Flux d’authentification :
- Le client envoie la requête
POST
Auth via social network au serveur Xsolla Login. La requête doit inclure l’en-têteAuthorization: Bearer {JWT}
et les paramètres obligatoires suivants :- Le paramètre de requête
projectId
— ID du projet de Login dans le Compte éditeur ; - Le paramètre de chemin
provider_name
— nom du réseau social connecté à Login dans le Compte éditeur. Il peut s’agir de :amazon
,apple
,babka
,baidu
,battlenet
,discord
,epicgames
,facebook
,github
,google
,kakao
,linkedin
,mailru
,microsoft
,msn
,naver
,ok
,paypal
,qq
,reddit
,steam
,twitch
,twitter
,vimeo
,vk
,wechat
,weibo
,xbox
,yahoo
,yandex
,youtube
.
- Le paramètre de requête
- L’utilisateur se connecte à un réseau social.
- Le serveur Xsolla Login traite les données utilisateur reçues du réseau social et envoie un webhook à l’URL de connexion via les réseaux sociaux. La réponse doit être dans le format décrit dans le flux d’interaction. Dans la réponse, vous pouvez spécifier une liste d’attributs utilisateur et/ou tout objet JSON nécessaire. L’objet JSON que vous fournissez dans la réponse est enregistré dans le champ
partner_data
du JWT de l’utilisateur.
Les données utilisateur sont passées dans l’en-tête Authorization
sous la forme d’un jeton de passerelle temporaire (un jeton serveur avec “request_type”: “gateway_token”)
.
Principaux champs du jeton de passerelle :
Revendication | Type | Description |
---|---|---|
exp | Unix Timestamp | Date et heure d’expiration du JWT. La durée de vie du JWT est de 7 minutes. Obligatoire. |
iat | Unix Timestamp | Date et heure d’émission du JWT. Obligatoire. |
iss | string | Service ayant signé le JWT : https://login.xsolla.com . Obligatoire. |
request_type | string | Constante : gateway_request . Obligatoire. |
xsolla_login_project_id | string (UUID) | ID de votre projet de connexion dans le Compte éditeur. Obligatoire. |
string | Adresse e-mail utilisateur. | |
sub | string (UUID) | ID utilisateur écrit sur le serveur Xsolla Login. Obligatoire. |
username | string | Nom d’utilisateur. |
provider | string | Nom du réseau social utilisé pour l’authentification. Obligatoire. |
id | string | ID utilisateur dans le réseau social. Obligatoire. |
social_access_token | string | Jeton d’accès du réseau social par lequel l’utilisateur a été authentifié. Pour permettre la transmission de cette requête, contactez votre responsable de la réussite client ou envoyez un e-mail à csm@xsolla.com. |
partner_data | string | Données de tout type retournées par votre serveur dans le corps de la réponse lors de l’authentification. Pour permettre la transmission de cette réclamation, contactez votre responsable de la réussite client ou envoyez un e-mail à csm@xsolla.com. |
- json
1{
2 "exp": 1573635020,
3 "iat": 1573634600,
4 "iss": "https://login.xsolla.com",
5 "request_type": "gateway_request",
6 "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000",
7 "sub": "00000000-0000-0000-0000-000000000000",
8 "email": "example@test.com",
9 "username": "Smith707",
10 "provider": "google",
11 "id": "123",
12}
Exemple de webhook à l’URL de connexion via les réseaux sociaux :
http
- http
- curl
1POST https://your.hostname/your_social_authentication_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{}
1curl --request POST \
2 --url 'https://your.hostname/your_social_authentication_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json'
Exemple de réponse à un webhook avec des attributs utilisateur :
- json
1{
2 "attributes": [
3 {
4 "attr_type": "server",
5 "key": "company",
6 "permission": "private",
7 "value": "facebook-promo"
8 },
9 {
10 "attr_type": "server",
11 "key": "custom-id",
12 "permission": "private",
13 "value": 48582
14 }
15 ]
16}
Exemple de réponse à un webhook avec un objet JSON :
- json
1{
2 "id": 123456,
3 "role": "scout"
4}
- Si l'authentification utilisateur échoue, fournissez un message d'erreur qui s'affichera dans le widget d'authentification. Pour ce faire, dans la réponse à la requête de création d'utilisateur, passez l'objet
error
avec les informations suivantes :- Dans le paramètre
code
, spécifiez un code d'erreur, par exemple011-002
; - Dans le paramètre
description
, fournissez le texte du message d'erreur.
- Dans le paramètre
Réinitialisation du mot de passe utilisateur
- Le client envoie la requête
POST
Reset password au serveur Xsolla Login. La requête doit inclure l'en-têteAuthorization: Bearer {JWT}
et les paramètres obligatoires suivants :- Le paramètre de requête
projectId
— ID du projet de Login dans le Compte éditeur ; - Le paramètre de corps
username
— nom d'utilisateur. Longueur autorisée : 3 à 255 caractères.
- Le paramètre de requête
- Le serveur Xsolla Login envoie à l'utilisateur un e-mail de confirmation de réinitialisation du mot de passe.
- Après avoir confirmé la réinitialisation du mot de passe via l'e-mail, l'utilisateur est redirigé vers la page de saisie du nouveau mot de passe.
- L'utilisateur saisit un nouveau mot de passe.
- Le serveur Xsolla Login envoie un webhook à l'URL de réinitialisation du mot de passe.
- Si la réinitialisation du mot de passe échoue, fournissez un message d'erreur qui s'affichera dans le widget d'authentification. Pour ce faire, dans la réponse à la requête de création d'utilisateur, passez l'objet
error
avec les informations suivantes :- Dans le paramètre
code
, spécifiez un code d'erreur, par exemple011-002
; - Dans le paramètre
description
, fournissez le texte du message d'erreur.
- Dans le paramètre
Exemple de webhook à l’URL de réinitialisation du mot de passe :
http
- http
- curl
1POST https://your.hostname/your_reset_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{
6 "username": "john@gmail.com",
7 "fields": {
8 "password": "NewPa$$word1"
9 }
10}
1curl --request POST \
2 --url 'https://your.hostname/your_reset_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json' \
5 --data '{"email":"john@gmail.com","fields":{"password":"NewPa$$word1"}}'
Poursuivre la lecture
Liens utiles
Comment connecter le stockage personnaliséFaute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.