REFERENSI API
ZEPETO Dunia Buka API
Membuat token otentikasi JWT untuk digunakan dengan API terbuka
13mnt
format permintaan api terbuka api terbuka zepeto dipanggil melalui http jika ada body dalam permintaan, parameter harus dikirim dalam format json contoh jenis konten yang valid ditunjukkan di bawah ini, dan mungkin ada sedikit perbedaan tergantung pada pustaka bahasa pemrograman masing masing content type application/json; charset=utf 8 dapatkan kunci akses, kunci rahasia dari zepeto studio sebelum membuat token otentikasi jwt, anda perlu mendapatkan kunci akses dan kunci rahasia dari konsol zepeto studio 📘 silakan merujuk ke panduan berikut mengelola api terbuka docid\ lxlohf5oe q bttonuhis membuat token otentikasi jwt api terbuka zepeto menghasilkan token format jwt( https //jwt io https //jwt io ) berdasarkan kunci akses dan kunci rahasia yang dikeluarkan untuk setiap permintaan dan mengirimkannya dalam header otorisasi hs256 disarankan sebagai metode tanda tangan, dan rahasia yang digunakan untuk penandatanganan adalah kunci rahasia yang dikeluarkan payload token jwt memiliki format berikut payload token jwt { "access key" "kunci akses yang diterbitkan (diperlukan)", "nonce" "nilai uuid yang diacak (diperlukan)", "uri hash" "nilai yang di hash dari uri, termasuk parameter kueri, kecuali jalur dasar (diperlukan)", "body hash" "nilai yang di hash dari body permintaan" } uri hash adalah nilai yang di hash dari uri termasuk parameter kueri kecuali jalur dasar body hash adalah nilai yang dikonversi menjadi string json dan di hash untuk dimasukkan ke dalam payload hanya ketika body permintaan ada; itu diabaikan jika tidak ada body permintaan dalam hal ini, tidak boleh ada spasi antara kunci dan nilai string json uri hash dan body hash harus di hash ke nilai yang sama seperti parameter kueri dan body permintaan yang dikirim ke permintaan (urutan nilai juga harus identik ) batas jumlah panggilan api hingga 300 panggilan tersedia dalam 1 menit contoh ketika tidak ada body permintaan silakan masukkan kunci akses, kunci rahasia, worldld, uri, dan parameter kueri sesuai dengan api yang ingin anda gunakan kode contoh di bawah ini telah ditulis berdasarkan api data pemain dari kategori 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}`; contoh ketika ada request body silakan masukkan access key, secret key, worldid, uri, dan parameter body sesuai dengan api yang ingin anda gunakan kode contoh di bawah ini telah ditulis berdasarkan api set player data dari kategori 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}`; ❗️ perhatian openapi adalah fitur yang disediakan untuk digunakan di web atau aplikasi terpisah saat ini, skrip server zepeto tidak dapat melakukan panggilan zepeto open api jika anda ingin melakukan panggilan open api di zepeto multiplayer, kami menyarankan metode berikut siapkan server terpisah untuk melakukan logika bisnis yang diperlukan dengan berkomunikasi dengan open api gunakan paket httpservice di server zepeto untuk berkomunikasi langsung dengan server yang telah anda siapkan terapkan metode otentikasi yang relatif sederhana antara server, seperti menggunakan header http authorize, untuk memungkinkan panggilan dalam fitur yang didukung oleh server zepeto