Aus EnzyklopAtys
Leda (Diskussion | Beiträge) (→API-Fehlercodes) |
Leda (Diskussion | Beiträge) |
||
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | <noinclude> | + | <noinclude>{{Trad |
|DE = Ryzom API |DEs= 4 | |DE = Ryzom API |DEs= 4 | ||
|EN = Ryzom API |ENs= 0 | |EN = Ryzom API |ENs= 0 | ||
Zeile 64: | Zeile 64: | ||
{{/Render}} | {{/Render}} | ||
− | == [[Ryzom API/ | + | == [[Ryzom API/Gilden-Symbol|Gilden-Symbol]] == |
− | {{/ | + | {{/Gilden-Symbol}} |
− | == [[Ryzom API/ | + | == [[Ryzom API/Gegenstands-Symbol|Gegenstands-Symbol]] == |
− | {{/ | + | {{/Gegenstands-Symbol}} |
---- | ---- | ||
− | =In Game= | + | = In Game = |
== [[Ryzom API/AppZone|AppZone]] == | == [[Ryzom API/AppZone|AppZone]] == | ||
{{/AppZone}} | {{/AppZone}} | ||
− | == In- | + | == In-Game-Browser == |
---- | ---- | ||
− | =WikipAtys= | + | |
− | ==Wiki | + | = WikipAtys = |
− | + | == Wiki-Implementierung == | |
+ | Seiten in [[:Kategorie:API Vorlagen]] : | ||
{{#dpl: | {{#dpl: | ||
category=API templates | category=API templates | ||
}} | }} | ||
− | ;<big><big>⚠</big></big> | + | ;<big><big>⚠</big></big>Warnung: |
− | : | + | : Der Code, der zum Abrufen von Symbolen benötigt wird, ist rohes HTML. Sie werden Bilder nicht so "einfach" formatieren können, wie wenn Sie Wiki-Code verwenden und das Bild auf [[:Atys:Main Page|Atys commons]] gespeichert ist. |
− | === | + | === Beispiele === |
*[[Handwerk/Handwerks-Teile-Tabelle]] | *[[Handwerk/Handwerks-Teile-Tabelle]] | ||
− | *[[Template:APIitemIcon]] ( | + | *[[Template:APIitemIcon]] (Dokumentationsbeispiele) |
=Links= | =Links= |
Aktuelle Version vom 27. Mai 2023, 14:07 Uhr
Diese Seite ist die Ryzom Forge-Version der api.ryzom.com-Seite.
Laut Wikipedia ist eine API oder "Anwendungsprogrammierschnittstelle" eine Computerschnittstelle, die Interaktionen zwischen mehreren Softwarevermittlern definiert. Sie definiert die Arten von Aufrufen oder Anfragen, die gemacht werden können, wie sie gemacht werden können, die Datenformate, die verwendet werden sollten, die zu befolgenden Konventionen, usw. [...]Durch das Verstecken von Informationen ermöglichen APIs eine modulare Programmierung, die es den Benutzern ermöglicht, die Schnittstelle unabhängig von der Implementierung zu nutzen.
In unserem Fall ist Ryzom API ein URL-basiertes System, um einige Ryzom in-game Informationen wie Spielzeit, Charakter, Gildenprofil... zu erhalten. Das API-Änderungsprotokoll kann gefunden werden unter forum.
Grundlagen
Basis-URL
Alle Anfragen verwenden https://api.ryzom.com
als Basis-URL.
API Schlüssel
- API-Schlüssel bestehen aus 41 alphanumerischen Zeichen. Charakterschlüssel beginnen mit 'c' und Gildenschlüssel mit 'g'.
- API-Schlüssel müssen mit "RyzomAPI app" erstellt werden: https://app.ryzom.com/app_ryzomapi
- Sie müssen Gildenleiter oder hoher Offizier sein, um den Api-Schlüssel der Gilde zu verwalten und einzusehen.
PHP API
Die PHP-API-Bibliothek befindet sich im ryzom API client-Repository.
Bibliotheken von Drittanbietern
(PHP) Übersetzungen der Blätter und Informationen über Ressourcen finden Sie in der https://github.com/nimetu/ryzom_extra Repository. Der json-resources Zweig hat Daten im Format JSON.
Python-Interface ?
Funktionen
Zeit
Um die Uhrzeit und das Datum in Ryzom zu erfahren.
Verwendung
<base URL>/time.php
URL-Parameter
- Format
- (optional), Standardwerte roh.
raw
: Gibt den Tick zurück. Der Tick des Servers ist eine 32-Bit-Ganzzahl, die alle 100 Millisekunden um eins erhöht wird.txt
: Gibt eine für Homin lesbare Zeichenkette zurück.xml
: Gibt eine xml-Datei zurück, die alle Shard-Zeitinformationen enthält.
Cache-Dauer
Die Daten werden für 1 Minute zwischengespeichert.
XML structure
<shard_time> <server_tick>514105152</server_tick> <jena_year>2576</jena_year> <day_of_jy>319</day_of_jy> <month_of_jy>10</month_of_jy> <cycle>0</cycle> <day_of_cycle>319</day_of_cycle> <month_of_cycle>10</month_of_cycle> <day_of_month>19</day_of_month> <day_of_week>1</day_of_week> <season>3</season> <day_of_season>49</day_of_season> <time_of_day>13</time_of_day> <txt_en>13h - Dua, Mystia 20, 1st AC 2576</txt_en> <txt_fr>13h - Dua, Mystia 20, 1er CA 2576</txt_fr> <txt_de>13h - Dua, Mystia 20, 1. AZ 2576</txt_de> <cache created="1387437183" expire="1387437243"/> </shard_time>
PHP-Interface
ryzom_time_api()
: Gibt SimpleXMLElement oder boolesches false bei Fehlschlag zurück.
<?php require_once "ryzomapi_lite.php"; $time = ryzom_time_api('xml'); if ($time !== false) { $txt_en = htmlspecialchars($time->txt_en); echo "Atys time is {$txt_en}"; } else { echo "API failure"; } ?>
Charakter
Zugang zu Charakterinformationen.
Verwendung
<base URL>/character.php?apikey=key <base URL>/character.php?apikey[=key1&apikey[]=key2
URL-Parameter
- apikey
- Charakter-API-Schlüssel beginnt mit 'c'
Cache-Laufzeit
<character> xml-Element hat die Attribute *created* und *cached_until* (utc-Zeitstempel)
XML-Struktur
API ist in der Lage, Informationen über mehrere Charaktere auf einmal zurückzugeben, und daher ist jedes <character>-Element ein Kind des <ryzomapi>-Wurzelelements:
<ryzomapi> <character apikey="key1" created="1387369332" modules="C01:P01" cached_until="1387369632"> .... </character> <character apikey="key2" created="1387369332" modules="P01" cached_until="1387369632"> .... </character> </ryzomapi>
Fehler bei ungültigem Schlüssel:
<character apikey="key1" created="1387369873"> <error code="404">Ungültiger Schlüssel</error> </character>
Mögliche Fehlercodes sind auf API-Fehlercodes aufgelistet.
PHP-Interface
ryzom_character_api($apikey)
- $apikey kann entweder ein String (einzelner Schlüssel) oder ein Array von Strings sein.
Bei Erfolg gibt die Funktion ein assoziatives Array von SimpleXMLElement mit apikey als Array-Index zurück. Bei einem Fehler gibt die Funktion den booleschen Wert false zurück.
<?php require_once "ryzomapi_lite.php";
function info($char) { if (isset($char->error)) { $apikey = htmlspecialchars($char['apikey']); $error = htmlspecialchars($char->error); $code = (int)$char->error['code']; echo "Character API key '{$apikey}' failed: {$code}:{$error}"; } else { $name = htmlspecialchars($char->name); echo "Character name: {$name}"; } }
$apikey = 'cABCDEF'; $chars = ryzom_character_api($apikey); if ($chars !== false) { info($chars[$apikey]); } else { echo "Character API failed"; }
$apikeys = ['cABCDEF', 'c123456']; $chars = ryzom_character_api($apikeys); if ($chars !== false) { foreach($chars as $char) { info($char); } } else { echo "Charakter-API gescheitert"; }
Gilden
Zeigt die Liste aller Gilden an.
Verwendung
<base URL>/guilds.php
Cache-Laufzeit
Das zurückgegebene XML enthält das Element <cache> mit den Attributen created und expire (utc timestamp)
XML-Struktur
<guilds> <cache created="1387371064" expire="1387374664"/> <shard>atys</shard> <guild> <gid>105906182</gid> <name>Atrium</name> <race>Fyros</race> <icon>575080624687965565</icon> <creation_date>131736955</creation_date> <description>Hier bist du der Hüter, dein Schicksal ist es, die Regeln zu machen, die eingehalten werden müssen.</description> </guild> <guild> .... </guild> </guilds>
PHP-Interface
ryzom_guildlist_api()
Die Funktion gibt bei Erfolg ein SimpleXMLElement-Objekt oder bei einem Fehler ein boolesches false zurück.
<?php require_once "ryzomapi_lite.php"; $guilds = ryzom_guildlist_api(); if ($guilds !== false) { echo '<pre>'; foreach($guilds->guild as $guild) { $gid = (int)$guild->gid; $name = htmlspecialchars($guild->name); echo "{$gid} {$name}\n"; } echo '</pre>'; } else { echo "API failure";
Gilde
Zugang zu Gilden-Informationen.
Verwendung
<base URL>/guild.php?apikey=key <base URL>/guild.php?apikey[]=key1&apikey[]=key2
URL-Parameter
- apikey
- Gilden-API-Schlüssel beginnt mit 'g'
Cache-Laufzeit
Das Guild-Xml-Element hat die Attribute created und cached_until (utc timestamp)
XML-Struktur
Die API ist in der Lage, Informationen für mehrere Gilden gleichzeitig zu liefern, und daher ist jedes <Gilde>-Element ein Kind von <ryzomapi>-Wurzelelementen.
<ryzomapi> <guild apikey="key1" created"1387369332" modules="G01:G02:G03:G04:P01" cached_until="1387369632"> ... </guild> <guild apikey="key2" created"1387369332" modules="P01" cached_until="1387369632"> ... </guild> </ryzomapi>
Fehler bei ungültigem Schlüssel:
<guild apikey="key1" created="1387369873">
<error code="404">ungültiger Schlüssel</error>
</guild>
Mögliche Fehlercodes sind auf API-Fehlercodes aufgelistet.
PHP-Interface
ryzom_guild_api($apikey)
$apikey kann entweder ein String oder ein Array von Strings sein
Funktion gibt assoziatives Array von SimpleXMLElement mit $apikey als Array-Index zurück Bei Fehlschlag gibt die Funktion den booleschen Wert false zurück
<?php require_once "ryzomapi_lite.php"; function info($guild) { if (isset($guild->error)) { $apikey = htmlspecialchars($guild['apikey']); $error = htmlspecialchars($guild->error); $code = (int)$guild->error['code']; echo "Gilden-API-Schlüssel '{$apikey}' gescheitert: {$code}:{$error}"; } else { $name = htmlspecialchars($guild->name); echo "Gilden-Name: {$name}"; } } $apikey = 'gABCDEF'; $guilds = ryzom_guild_api($apikey); if ($guilds !== false) { info($guilds[$apikey]); } else { echo "Gilden-API gescheitert"; } $apikeys = ['gABCDEF', 'g123456']; $guilds = ryzom_guild_api($apikeys); if ($guilds !== false) { foreach($guilds as $guild) { info($guild); } } else { echo "Gilden-API gescheitert"; }
API-Fehlercodes
- 404 ungültiger API-Schlüssel
- Kein solcher API-Schlüssel.
- 403 key expired
- API-Schlüssel ist gültig, aber abgelaufen
- 503 Charakterdaten sind nicht initialisiert
- 503 Gilden-Daten sind nicht initialisiert
- Temporärer serverseitiger Fehler, der anzeigt, daß die Charakter-/Gildeninformationen derzeit nicht verfügbar sind.
- Daten werden verfügbar sein, nachdem sich der Charakter im Spiel eingeloggt hat
Tools
Render
Dies ist ein Satz von PHP-Funktionen zum Rendern einer Webseite im Ryzom-Stil.
CSS-Datei
Sie müssen die Ryzom-css-Datei manuell einbinden:
<link href="https://api.ryzom.com/data/css/ryzom_ui.css" rel="stylesheet" media="all">
PHP-Interface
ryzom_render_window($title, $content, array $links)
Gibt HTML-Markup zurück, das dem Stil des Ingame-Fensters ähnelt
$title
$content
$links
- (optional) assoziatives Array, das die Schaltflächen auf der rechten Seite der Titelleiste des Fensters definiert
<?php
require_once "ryzomapi_lite.php";
$links = array(
array('href' => 'http://www.ryzom.com/', 'text' => 'Ryzom-Webseite'),
array('href' => 'http://app.ryzom.com/app_ryzomapi/', 'text' => 'RyzomAPI-App'),
);
echo ryzom_render_window('Title', 'Hallo Welt!', $links);
Gilden-Symbol
Ruft ein Gilden-Symbol ab
Verwendung
<base URL>/guild_icon.php?icon=:icon&size=:size
URL-Parameter
- icon
- Es handelt sich um eine 64-Bit-Rohzahl aus der Charakter- oder Gildenlisten-xml-Datei
- size (optional)
s
(Standard) Kleines Gilden-Icon (32x32 Pixel)b
Großes Gilden-Icon (64x64 Pixel)
- size (optional)
Cache-Laufzeit
Es wird für immer zwischengespeichert, da das Symbol einzigartig ist und sich nie ändert. Für ein bestimmtes Symbol wird immer das gleiche Bild zurückgegeben.
PHP-Interface
ryzom_guild_icon_url($icon, $size)
Gibt einen String zurück, der die URL für die Anzeige eines Gildensymbols enthält.
<?php
require_once "ryzomapi_lite.php";
$url = ryzom_guild_icon_url("4505559206514131", 'b');
echo "<img src=\"$url\" alt=\"\">";
Gegenstands-Symbol
Ruft Gegenstandssymbole ab (siehe hierzu auch: Ryzom API/Gegenstands-SheetIDs)
Verwendung
<base URL>/item_icon.php?sheetid=iczahp_3.sitem&c=1&q=0&s=0&sap=-1&destroyed=0&label=1&locked=0
URL-Parameter
Parameter | Beschreibung | Standart | Beispiel-Symbol | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sheetid | Es handelt sich um die ID eines Elements, die Sie in der Xml-Datei Charakter finden können. Zum Beispiel, iczahp_3.sitem ist ein gültiges SheetID. SheetIDs findest Du in Nimetu's ryzom_extra repository |
| |||||||||||||||||||
c | (optional), Standart ist 1 Die Farbe des Gegenstandes. Ist ein Wert zwischen 0 und 7 |
|
| ||||||||||||||||||
q | (optional), Standard ist 0 Die Qualität des Gegenstandes. |
|
| ||||||||||||||||||
s | (optional), Standard ist 0 Die Größe des Stapels. |
|
| ||||||||||||||||||
sap | (optional) Menge des Sap plus 1 des Gegenstandes. -1 = (Standard) Kein Sap-Symbol, keine Zahl 0 = Sap-Symbol, keine Zahl |
|
| ||||||||||||||||||
destroyed | (optional) zeigt den Gegenstand an, als ob er zerstört wäre (mit einem roten Kreuz) 0 = (Standard) |
|
| ||||||||||||||||||
label | (optional), zeichnet den Text des Symbols, falls vorhanden 1 = (Standard) |
|
| ||||||||||||||||||
locked | (optional) zeigt den Gegenstand so an, als ob er vom Eigentümer gesperrt worden wäre 0 = (default) |
|
|
Cache-Laufzeit
Es wird für immer zwischengespeichert, da das Symbol einzigartig ist und sich nie ändert. Für ein bestimmtes Symbol wird immer das gleiche Bild zurückgegeben.
PHP-Interface
ryzom_item_icon_url($sheetid, $c=-1, $q=0, $s=0, $sap=-1, $destroyed=false, $label=true, $locked=false)
Gibt eine Zeichenkette zurück, die die Url für die Anzeige eines Gegenstands-Symbols enthält.
<?php
require_once "ryzomapi_lite.php";
$url = ryzom_item_icon_url('iczahp_3.sitem', 2);
echo "<img src=\"{$url}\" alt=\"\">";
In Game
AppZone
Benutzerauthentifizierung für in AppZone registrierte Anwendungen
Verwendung
- URL-Werte
user
-- base64 kodiertes php serialisiertes Arraychecksum
-- sha1 hash_hmac mit geheimem App-Schlüssel aus AppZone
Aufgrund von php serialize muss die Prüfsumme validiert werden, bevor der Benutzerwert sicher verwendet werden kann.
Eine validierende Prüfsumme bietet auch eine starke Garantie dafür, daß der Benutzer derjenige ist, der er vorgibt zu sein.
Beispiel, wie die Rückmeldung erstellt wird:
$userArray = [
'timestamp' => "0.9696200 1503915319",
'app_url' => 'http://...',
'id' => "1",
'char_name' => 'Spieler',
'race' => 'Tryker',
'cult' => 'Neutral',
'civ' => 'Neutral',
'organization' => 'Marodeur',
'guild_id' => '105906000',
'guild_icon' => '17',
'guild_name' => 'Gilde',
'grade' => 'Anführer',
'lang' => 'de'
];
$user = base64_encode(serialize($userArray));
$checksum = hash_hmac('sha1', $user, $appKey);
timestamp
enthält Mikrosekunden und Sekunden, in denen die Antwort erstellt wurde, und sollte überprüft werden, um zu verhindern, dass dieselbe Antwort mehrfach wiedergegeben wird.
app_url
muss aktiviert werden, um zu verhindern, dass dieselbe AppZone-Antwort in anderen Anwendungen verwendet wird.
PHP-Interface
ryzom_app_authenticate(&$user)
Diese Funktion überprüft die AppZone-Benutzer- und -Prüfsummen-URL-Parameter. Verwendet $_GET['user'] und $_GET['checksum'] direkt.
Die Funktion gibt bei Erfolg den booleschen Wert true zurück. Die Variable $user enthält Informationen von AppZone oder eine Fehlermeldung, wenn ein Fehler aufgetreten ist.
$_SESSION['app.user']
|
ist für künftige Anfragen gesetzt. PHP-Sitzung ist erforderlich. |
- Konstanten welche definiert sein sollten :
RYAPI_AUTH_KEY
- geheimer Schlüssel in der AppZone
- wenn leer, dann werden die Benutzerdaten nicht überprüft (nicht empfohlen)
RYAPI_APP_URL
- App-Url in der AppZone
- wenn leer, dann wird automatisch die am besten ermittelte Url verwendet
- wenn false, dann wird die Anwendungs-Url nicht verifiziert
RYAPI_APP_MAXAGE
- Höchstalter in Sekunden für die Gültigkeit der AppZone-Url
- wenn 0, wird der Zeitstempel (timestamp) nicht verifiziert
<?php
require_once "ryzomapi_lite.php";
define('RYAPI_AUTH_KEY', 'secret-key');
define('RYAPI_APP_URL', 'http://app.url/');
define('RYAPI_APP_MAXAGE', 30);
session_start();
$user = false;
if (ryzom_app_authenticate($user)) {
$charName = htmlspecialchars($user['char_name']);
echo "Hallo {$charName}!";
} else {
$error = htmlspecialchars($user);
echo "Autentifizierungs-Fehler ({$error}).";
}
In-Game-Browser
WikipAtys
Wiki-Implementierung
Seiten in Kategorie:API Vorlagen :
Extension:DynamicPageList (DPL), version 3.1.1: Warnung: Kein passender Eintrag gefunden!
- ⚠Warnung
- Der Code, der zum Abrufen von Symbolen benötigt wird, ist rohes HTML. Sie werden Bilder nicht so "einfach" formatieren können, wie wenn Sie Wiki-Code verwenden und das Bild auf Atys commons gespeichert ist.
Beispiele
- Handwerk/Handwerks-Teile-Tabelle
- Template:APIitemIcon (Dokumentationsbeispiele)
Links
- API Documentation (sources):
- ➡ https://api.ryzom.com/
- ⛔ http://dev.ryzom.com/projects/ryzom-api/wiki (registered developers, 🔑 password required)
- Example page and php library sources : https://bitbucket.org/nimetu/ryzomapi_lite
- Live working example page (Ballistic Mystix) : http://ryapp.bmsite.net/
- API discussion in forum : http://app.ryzom.com/app_forum/index.php?page=topic/view/18541
- the App (Appzone) Api key to create and get a key: https://app.ryzom.com/app_ryzomapi/index.php?
- Ergänzungen zu dieser Seite: