RÉFÉRENCE API
ZEPETO World Open API

Création d'un jeton d'authentification JWT pour utiliser avec l'API ouverte

13min
format de requête api ouverte l'api ouverte zepeto est appelée via http si un corps est présent dans la requête, les paramètres doivent être envoyés au format json des exemples de types de contenu valides sont montrés ci dessous, et il peut y avoir de légères différences selon la bibliothèque de langage de programmation respective content type application/json; charset=utf 8 obtenir la clé d'accès, la clé secrète depuis zepeto studio avant de créer un jeton d'authentification jwt, vous devez obtenir une clé d'accès et une clé secrète depuis la console zepeto studio 📘 veuillez vous référer au guide suivant gestion des api ouvertes docid\ w4h3mldlo2x4aveye pm0 création d'un jeton d'authentification jwt l'api ouverte zepeto génère un jeton au format jwt( https //jwt io https //jwt io ) basé sur la clé d'accès et la clé secrète émises pour chaque requête et l'envoie dans l'en tête d'autorisation hs256 est recommandé comme méthode de signature, et la clé secrète à utiliser pour la signature est la clé secrète émise la charge utile du jeton jwt a le format suivant charge utile du jeton jwt { "access key" "clé d'accès émise (requise)", "nonce" "valeur uuid randomisée (requise)", "uri hash" "une valeur hachée de l'uri, y compris les paramètres de requête, excluant le chemin de base (requise)", "body hash" "valeur hachée du corps de la requête" } uri hash est la valeur hachée de l'uri y compris le paramètre de requête sauf pour le chemin de base body hash est la valeur convertie en chaîne json et hachée pour être insérée dans la charge utile uniquement lorsque le corps de la requête existe ; elle est omise s'il n'y a pas de corps de requête dans ce cas, il ne doit pas y avoir d'espaces entre la clé et la valeur de la chaîne json uri hash et body hash doivent être hachés à la même valeur que le paramètre de requête et le corps de la requête envoyés à la requête (l'ordre des valeurs doit également être identique ) limite sur le nombre d'appels api jusqu'à 300 appels sont disponibles en 1 minute exemple lorsqu'il n'y a pas de corps de requête veuillez entrer la clé d'accès, la clé secrète, l'identifiant du monde, l'uri et le paramètre de requête selon l'api que vous souhaitez utiliser le code d'exemple ci dessous a été écrit en fonction de l'api get player data de la catégorie datastorage java string accesskey = "accesskey"; string secretkey = "secretkey"; string worldid = "com test world"; string uri = "/datastorage/v1/worlds/" + worldid + "/player data"; messagedigest urihash = messagedigest getinstance("sha 256"); urihash update(uri getbytes(standardcharsets utf 8)); byte\[] urihashbytes = urihash digest(); objectmapper objectmapper = new objectmapper(); map\<string, object> payload = new hashmap<>(); payload put("access key", accesskey); payload put("nonce", uuid randomuuid() tostring()); payload put("uri hash", new string(base64 encodebase64(urihashbytes), standardcharsets utf 8)); string jwttoken = jwts builder() setpayload(objectmapper writevalueasstring(payload)) signwith(signaturealgorithm hs256, secretkey getbytes(standardcharsets utf 8)) compact(); string authorization = "bearer " + jwttoken; python import jwt import uuid import hashlib import base64 accesskey = 'accesskey' secretkey = 'secretkey' worldid = 'com test world' uri = '/datastorage/v1/worlds/' + worldid + '/player data?playerid=testplayerid\&keys=test' hash = hashlib sha256() hash update(uri encode()) payload = { 'access key' accesskey, 'nonce' str(uuid uuid4()), 'uri hash' base64 b64encode(hash digest()) decode('utf8') } jwt token = jwt encode(payload, secretkey) authorization = 'bearer {}' format(jwt token) nodejs import as jwt from 'jsonwebtoken'; import as uuid from 'uuid'; import as crypto from 'crypto js'; import { buffer } from 'safe buffer'; const accesskey = 'accesskey'; const secretkey = 'secretkey'; const worldid = 'com test world'; const uri = '/datastorage/v1/worlds/' + worldid + '/player data?playerid=testplayerid\&keys=test'; const hash = crypto sha256(uri); const payload = { access key accesskey, nonce uuid v4(), uri hash buffer from(hash tostring(), 'hex') tostring('base64') }; const jwttoken = jwt sign(payload, secretkey); const authorization = `bearer ${jwttoken}`; exemple lorsque il y a un corps de requête veuillez entrer la clé d'accès, la clé secrète, l'identifiant du monde, l'uri et le paramètre du corps selon l'api que vous souhaitez utiliser le code d'exemple ci dessous a été écrit en fonction de l'api de définition des données du joueur de la catégorie datastorage java string accesskey = "accesskey"; string secretkey = "secretkey"; string worldid = "com test world"; string uri = "/datastorage/v1/worlds/" + worldid + "/player data"; messagedigest urihash = messagedigest getinstance("sha 256"); urihash update(uri getbytes(standardcharsets utf 8)); byte\[] urihashbytes = urihash digest(); objectmapper objectmapper = new objectmapper(); playerdata datamap = new playerdata("test", "test value"); list\<playerdata> datalist = new arraylist<>(); datalist add(datamap); playerdatasetparam param = new playerdatasetparam(datalist, "testplayerid"); messagedigest paramhash = messagedigest getinstance("sha 256"); paramhash update(objectmapper writevalueasstring(param) getbytes(standardcharsets utf 8)); byte\[] paramhashbytes = paramhash digest(); map\<string, object> payload = new hashmap<>(); payload put("access key", accesskey); payload put("nonce", uuid randomuuid() tostring()); payload put("uri hash", new string(base64 encodebase64(urihashbytes), standardcharsets utf 8)); payload put("body hash", new string(base64 encodebase64(paramhashbytes), standardcharsets utf 8)); string jwttoken = jwts builder() setpayload(objectmapper writevalueasstring(payload)) signwith(signaturealgorithm hs256, secretkey getbytes(standardcharsets utf 8)) compact(); string authorization = "bearer " + jwttoken; python import jwt import uuid import hashlib import base64 import simplejson as json accesskey = 'accesskey' secretkey = 'secretkey' worldid = 'com test world' uri = '/datastorage/v1/worlds/' + worldid + '/player data' hash = hashlib sha256() hash update(uri encode()) param = { 'playerid' 'testplayerid', 'data' \[ { 'key' 'test', 'value' 'test value' } ] } param hash = hashlib sha256() param hash update(json dumps(param, ensure ascii=false, encoding='surrogatepass') encode()) payload = { 'access key' accesskey, 'nonce' str(uuid uuid4()), 'uri hash' base64 b64encode(hash digest()) decode('utf8'), 'body hash' base64 b64encode(param hash digest()) decode('utf8') } jwt token = jwt encode(payload, secretkey) authorization = 'bearer {}' format(jwt token) nodejs import as jwt from 'jsonwebtoken'; import as uuid from 'uuid'; import as crypto from 'crypto js'; import { buffer } from 'safe buffer'; const accesskey = 'accesskey'; const secretkey = 'secretkey'; const worldid = 'com test world'; const uri = '/datastorage/v1/worlds/' + worldid + '/player data'; const hash = crypto sha256(uri); const param = { playerid 'testplayerid', data \[ { value 'test value', key 'test' } ] }; const paramhash = crypto sha256(json stringify(param,null,0)); const payload = { access key accesskey, nonce uuid v4(), uri hash buffer from(hash tostring(), 'hex') tostring('base64'), body hash buffer from(paramhash tostring(), 'hex') tostring('base64') }; const jwttoken = jwt sign(payload, secretkey); const authorization = `bearer ${jwttoken}`; ❗️ avertissement openapi est une fonctionnalité fournie pour une utilisation dans un site web ou une application séparée actuellement, les scripts du serveur zepeto ne peuvent pas effectuer d'appels à l'api ouverte de zepeto si vous souhaitez effectuer des appels à l'api ouverte dans zepeto multijoueur, nous suggérons les méthodes suivantes configurez un serveur séparé pour effectuer la logique métier nécessaire en communiquant avec l'api ouverte utilisez le package httpservice dans le serveur zepeto pour communiquer directement avec le serveur que vous avez configuré implémentez une méthode d'authentification relativement simple entre les serveurs, comme l'utilisation des en têtes d'autorisation http, pour permettre des appels dans les fonctionnalités prises en charge par le serveur zepeto