> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Démarrage rapide Java pour Java natif et Android Studio

> Téléchargez les fichiers JAR du SDK client Java de PlayFab, configurez le classpath et effectuez votre premier appel d'API LoginWithCustomID en Java natif ou sur Android.

Ce démarrage rapide vous permet de prendre en main le JavaSDK PlayFab avec un programme Java simple.

Avant de pouvoir appeler une API PlayFab, vous devez disposer d'un [compte de développeur PlayFab](https://developer.playfab.com).

Les objectifs de ce tutoriel sont les suivants :

* Obtenir les fichiers JAR nécessaires.

* Ajouter les fichiers JAR au classpath.

* Créer une application console Java minimale qui exécute l'[appel d'API de connexion par ID personnalisé](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid).

## Obtenir les fichiers JAR nécessaires

Pour utiliser le JavaSDK PlayFab, nous avons besoin du JavaSDK client PlayFab et de sa dépendance, Google GSON.

Téléchargez la bibliothèque JAR du JavaSDK client PlayFab [ici](https://github.com/PlayFab/JavaSDK/tree/versioned/builds). Recherchez **client-sdk-\*.jar**, ainsi que la documentation Java correspondante \[facultative mais utile].

Vous pouvez télécharger la dernière version de Google GSON [ici](https://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.0/). Recherchez **gson-\*.jar**.

## Configuration du projet avec Intellij Idea

Une fois que vous avez initialisé un projet Java simple dans Intellij Idea, assurez-vous de placer les fichiers JAR nécessaires comme illustré dans l'exemple suivant.

![Intellij - Configuration du projet](https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/java/intellij-proj-setup.png?fit=max\&auto=format\&n=N3T1ucKV7zIMBudj\&q=85\&s=85dc548792dd8ba7c4dffd3eaddd3d43)

L'étape suivante consiste à ajouter les fichiers JAR au classpath. Accédez à **File** -> **,** comme illustré dans l'exemple ci-dessous.

![Intellij - Ajouter des fichiers JAR au classpath](https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/java/intellij-add-jar-files-to-classpath.png?fit=max\&auto=format\&n=N3T1ucKV7zIMBudj\&q=85\&s=167ce0cbbce7cefb93979d2ccfa8b896)

Accédez à **Libraries** et ajoutez une nouvelle bibliothèque Java comme illustré dans l'image ci-dessous.

![Intellij - Ajouter une nouvelle bibliothèque Java](https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/java/intellij-add-new-java-library.png?fit=max\&auto=format\&n=N3T1ucKV7zIMBudj\&q=85\&s=db7b46a3ccb01057f0d1e66474ab828c)

Sélectionnez les fichiers JAR que vous avez ajoutés au dossier libs, puis sélectionnez **OK** comme illustré ci-dessous.

![Intellij - Sélectionner les fichiers JAR](https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/java/intellij-select-jar-files.png?fit=max\&auto=format\&n=N3T1ucKV7zIMBudj\&q=85\&s=e60d7b28a9a1880a0ddd32661d6c7765)

Si le **Module** vous est demandé, sélectionnez le premier de la liste. Vérifiez que tous les fichiers JAR ont été ajoutés à la liste des bibliothèques.

![Intellij - Vérifier l'ajout des fichiers JAR](https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/java/intellij-ensure-jar-files-added.png?fit=max\&auto=format\&n=N3T1ucKV7zIMBudj\&q=85\&s=6dc524df20ee6c2b4a2cb3a894fd83c2)

## Configuration du projet avec n'importe quel IDE

La principale exigence est que les fichiers JAR soient ajoutés au classpath. Consultez le guide de votre IDE pour savoir comment ajouter des fichiers JAR au classpath.

## Configurer votre premier appel d'API

Utilisez le code ci-dessous comme code de votre classe principale.

```java theme={null}
import java.util.concurrent.*;
import java.util.*;

import com.playfab.PlayFabErrors.*;
import com.playfab.PlayFabSettings;
import com.playfab.PlayFabClientModels;
import com.playfab.PlayFabClientAPI;

public class Main
{
    private static boolean _running = true;

    public static void main(String[] args) {
        PlayFabSettings.TitleId = "144";

        PlayFabClientModels.LoginWithCustomIDRequest request = new PlayFabClientModels.LoginWithCustomIDRequest();
        request.CustomId = "GettingStartedGuide";
        request.CreateAccount = true;

        FutureTask<PlayFabResult<com.playfab.PlayFabClientModels.LoginResult>> loginTask = PlayFabClientAPI.LoginWithCustomIDAsync(request);
        loginTask.run();

        while (_running) {
            if (loginTask.isDone()) { // You would probably want a more sophisticated way of tracking pending async API calls in a real game
                OnLoginComplete(loginTask);
            }

            // Presumably this would be your main game loop, doing other things
            try {
                Thread.sleep(1);
            } catch(Exception e) {
                System.out.println("Critical error in the example main loop: " + e);
            }
        }
    }

    private static void OnLoginComplete(FutureTask<PlayFabResult<com.playfab.PlayFabClientModels.LoginResult>> loginTask) {
        PlayFabResult<com.playfab.PlayFabClientModels.LoginResult> result = null;
        try {
            result = loginTask.get(); // Wait for the result from the async call
        } catch(Exception e) {
            System.out.println("Exception in PlayFab api call: " + e); // Did you assign your PlayFabSettings.TitleId correctly?
        }

        if (result != null && result.Result != null) {
            System.out.println("Congratulations, you made your first successful API call!");
        } else if (result != null && result.Error != null) {
            System.out.println("Something went wrong with your first API call.");
            System.out.println("Here's some debug information:");
            System.out.println(CompileErrorsFromResult(result));
        }

        _running = false; // Because this is just an example, successful login triggers the end of the program
    }

    // This is a utility function we haven't put into the core SDK yet. Feel free to use it.
    private static <RT> String CompileErrorsFromResult(PlayFabResult<RT> result) {
        if (result == null || result.Error == null)
            return null;

        String errorMessage = "";
        if (result.Error.errorMessage != null)
            errorMessage += result.Error.errorMessage;
        if (result.Error.errorDetails != null)
            for (Map.Entry<String, List<String>> pair : result.Error.errorDetails.entrySet() )
                for (String msg : pair.getValue())
                    errorMessage += "\n" + pair.getKey() + ": " + msg;
        return errorMessage;
    }
}
```

## Terminer et exécuter

Pour exécuter l'application :

1. Sélectionnez la **flèche de lecture >** dans le coin supérieur droit. Cela démarre l'exécution du programme et le panneau de sortie s'affiche.
2. Repérez le **message de débogage**. Il indique que l'appel d'API a réussi.

![Intellij - Exécuter le programme](https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/java/intellij-run-program.png?fit=max\&auto=format\&n=N3T1ucKV7zIMBudj\&q=85\&s=04ce4add6100b9b56db869bf97baadbb)

À ce stade, vous pouvez commencer à effectuer d'autres appels d'API et à développer votre jeu.

Pour obtenir la liste de tous les appels d'API client disponibles, consultez notre documentation [Références de l'API PlayFab](/fr-CA/services/playfab/api-references.md).

## Analyse du code

Cette dernière section facultative décrit en détail chaque ligne de `GettingStarted.java`.

* Imports
  * Il s'agit de l'ensemble minimal d'imports utilisés pour effectuer des appels d'API PlayFab.

* public static void `main(String[] args) {`
  * Une simple boucle qui lance un appel d'API et attend qu'il se termine.

  * `PlayFabSettings.TitleId = "xxxx"`;
    * Chaque développeur PlayFab crée un titre dans Game Manager. Lorsque vous publiez votre jeu, vous devez coder ce titleId dans votre jeu. Cela permet au client de savoir comment accéder aux bonnes données dans PlayFab. Pour la plupart des utilisateurs, considérez simplement qu'il s'agit d'une étape obligatoire pour que PlayFab fonctionne.

  * `PlayFabClientModels.LoginWithCustomIDRequest request = new PlayFabClientModels.LoginWithCustomIDRequest();`
    * La plupart des méthodes de l'API PlayFab nécessitent des paramètres d'entrée, et ces paramètres d'entrée sont regroupés dans un objet de requête.

    * Chaque méthode d'API nécessite un objet de requête unique, avec un mélange de paramètres facultatifs et obligatoires.
      * Pour `LoginWithCustomIDRequest`, il existe un paramètre obligatoire `CustomId`, qui identifie un joueur de façon unique, et `CreateAccount`, qui permet de créer un nouveau compte avec cet appel.

    * Pour la connexion, la plupart des développeurs voudront utiliser une méthode de connexion plus appropriée.
      * Consultez la documentation sur la connexion PlayFab pour obtenir la liste de toutes les méthodes de connexion et de leurs paramètres d'entrée. Les choix courants sont :
        * `LoginWithAndroidDeviceID`
        * `LoginWithIOSDeviceID`
        * `LoginWithEmailAddress`

  * `FutureTask<PlayFabResult<com.playfab.PlayFabClientModels.LoginResult>> loginTask = PlayFabClientAPI.LoginWithCustomIDAsync(request)`;
    * Cette ligne lance la requête asynchrone vers `LoginWithCustomID` à l'aide du framework FutureTask de Java.

  * While (running) `{ if (loginTask.isDone()) { OnLoginComplete(loginTask); } }`
    * Exécute une boucle principale triviale et attend de façon asynchrone que loginTask se termine.
    * Une fois terminé, appelle `OnLoginComplete`.

* `OnLoginComplete (loginTask)`
  * `result = loginTask.get()`;
    * Récupère le résultat asynchrone (cela ne provoque pas de blocage, car nous avons confirmé que la FutureTask est déjà terminée).

  * Si (`result.Result != null`), l'appel d'API a réussi.
    * En cas de réussite, l'objet `result.Result` de nombreux rappels d'API contient les informations demandées.

    * `LoginResult` contient plus précisément des informations de base sur le joueur. Mais pour la plupart des utilisateurs, la connexion est simplement une étape obligatoire avant d'appeler d'autres API.

  * Si (`result.Error != null`), l'appel d'API a échoué.
    * Les appels d'API peuvent échouer pour de nombreuses raisons, et vous devez toujours essayer de gérer les échecs.
    * Raisons pour lesquelles les appels d'API échouent (par ordre de probabilité)
      * `PlayFabSettings.TitleId` n'est pas défini. Si vous oubliez de définir `TitleId` sur votre titre, rien ne fonctionnera.
      * Paramètres de la requête. Si vous n'avez pas fourni les informations correctes ou requises pour un appel d'API particulier, celui-ci échouera. Consultez `error.errorMessage`, `error.errorDetails` ou `error.GenerateErrorReport()` pour plus d'informations.
      * Problème de connectivité de l'appareil. Les téléphones portables perdent et retrouvent constamment la connectivité. Ainsi, n'importe quel appel d'API peut échouer de façon aléatoire à tout moment, puis fonctionner immédiatement après. Entrer dans un tunnel peut vous déconnecter complètement.
      * Problème de serveur PlayFab. Comme pour tout logiciel, des problèmes peuvent survenir. Consultez nos [notes de publication](/fr-CA/services/playfab/release-notes.md) pour connaître les mises à jour.
      * Internet n'est pas fiable à 100 %. Parfois, le message est corrompu ou n'atteint pas le serveur PlayFab.

  * Si vous avez des difficultés à déboguer un problème et que les informations d'erreur ne suffisent pas, rendez-vous sur nos [forums](https://community.playfab.com/index.html).


## Related topics

- [Démarrage rapide JavaScript pour JavaScript natif et Phaser](/fr-CA/services/playfab/sdks/javascript/quickstart.md)
- [Démarrage rapide Android](/fr-CA/services/playfab/sdks/c/quickstart-android.md)
- [PlayFab Services pour Android](/fr-CA/services/playfab/sdks/platforms/android.md)
- [Démarrage rapide des notifications push](/fr-CA/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/quickstart.md)
- [Démarrage rapide C++ pour Windows](/fr-CA/services/playfab/sdks/playfab-cpp/quickstart-windows.md)
