Konsep dasar

Project, key, sesi pemain, dan cara setiap SDK melaporkan hasil dan error.

Komentar kode dan nama API tetap dalam bahasa Inggris agar sesuai dengan SDK.

Di halaman ini

Project dan key#

Setiap game adalah satu project. Key-nya mengidentifikasi project, bukan pemain.

KredensialTempat dipakai
Base URLAlamat instalasi ini. API berada di bawah /v1.
Project IDDi setiap request, sebagai X-Project-ID. Publik.
Client key pk_live_…Build game dan halaman web, sebagai X-Client-Key. Publik: hanya bisa bertindak untuk pemain yang sudah login.
Secret key sk_live_…Hanya di server Anda sendiri, sebagai X-Secret-Key. Ditampilkan sekali dan disimpan dalam bentuk hash; membuka akses ke endpoint khusus server.
Jangan pernah memasukkan secret key (sk_live_…) ke build game atau halaman web. Apa pun yang dikirim ke pemain bisa dibaca.

Pemain dan sesi#

Panggilan pemain membutuhkan access token. Login mengembalikan access token (berlaku satu jam) bersama refresh token (berlaku 30 hari).

  • SDK menyimpan sesi di perangkat dan memperbaruinya sebelum kedaluwarsa, sehingga pemain tetap login setiap kali game dibuka.
  • Refresh token berganti setiap kali dipakai. Memakai ulang token lama akan mengeluarkan sesi itu dari semua perangkat (deteksi pencurian).
  • Setiap pemain mulai sebagai tamu dan nanti bisa menautkan akun email atau Google; progres tamu ikut pindah. Lihat Pemain.

Hasil, bukan exception#

Panggilan SDK tidak pernah melempar exception saat terjadi error jaringan atau server. Hasilnya berisi ok, sebuah nilai, dan error dengan kode tetap, pesan, serta request ID.

C#
var top = await Majacloud.Leaderboards.GetTopAsync("coins", 10);
if (top.Ok)
{
    foreach (var entry in top.Value.Entries)
        Debug.Log($"#{entry.Rank} {entry.PlayerName} {entry.Score}");
}
else if (top.Error.IsRetryable)
{
    // Network, timeout, 5xx or rate limit: try again later
    Debug.Log("Retry in " + top.Error.RetryAfterSeconds + " s");
}
else
{
    Debug.LogWarning(top.Error.Code + ": " + top.Error.Message + " (" + top.Error.RequestId + ")");
}

Percobaan ulang dan rate limit#

SDK mengulang request yang aman saat terjadi error jaringan dan respons 5xx dengan exponential backoff, dan menunggu respons 429 sesuai Retry-After.

  • Setiap project bisa mengirim hingga 120 request per menit; lebih dari itu API menjawab rate_limited.
  • Setiap akun punya kuota request harian sesuai paketnya (lihat Batas); jika terlampaui, API menjawab quota_exceeded sampai pukul 00:00 UTC.
  • Respons menyertakan X-RateLimit-Limit, X-RateLimit-Remaining, dan, saat mendekati kuota, X-RateLimit-Daily-Remaining.

Request ID dan log#

Setiap respons punya header X-Request-ID, dan setiap error menyertakan request_id. Cari ID itu di halaman Log project Anda untuk melihat endpoint, status, latensi, dan pemainnya.

Cari judul halaman, subjudul, dan teks.

↑↓ untuk berpindah ↵ untuk membuka Esc untuk menutup