2017-09-12 4 views
0

Je crée un jeu en utilisant Libgdx et maintenant j'ai atteint la partie où l'utilisateur peut se connecter à son compte facebook, de cette façon, l'utilisateur peut comparer ses scores avec des amis.scores LibGdx facebook

J'ai pu implémenter le package facebook sdk dans mon projet, obtenir un ID d'application sur facebook et hashkey. Après cela, j'ai frappé un mur. J'ai essayé toutes les ressources disponibles que je peux trouver en ligne mais rien ne fonctionne (passé 2 jours là-dessus). Ce que j'ai compris, c'est que j'ai besoin de créer dans mon projet de base une interface, qui sera liée à ma classe d'authentification facebook dans mon dossier android.

J'ai essayé plusieurs essais avec de nombreux projets disponibles en ligne sans succès.

Toute aide ou tutoriel disponible sera grandement apprécié.

+0

Vous pouvez utiliser https://github.com/TomGrill/gdx-facebook ou regarder comment cela est fait ici. –

+0

@ TomGrillGames, je l'ai déjà vérifié sans succès. Jusqu'à présent, j'ai été en mesure de lier l'API Facebook à un projet de studio android normal. Maintenant, je vérifie pour voir comment l'ouvrir à partir de libgdx –

Répondre

1

Je ne suis pas sûr de ce que vous avez essayé tous déjà, mais voici une bonne source:

https://github.com/TomGrill/gdx-facebook/wiki

de la section 3 du wiki lien ci-dessus, note:

IMPORTANT facebook-android-sdk est au format .aar. Certains IDE (par exemple, Eclipse) ne sont pas capables de gérer ce type de fichier. Cela signifie que vous devez commencer votre application en utilisant la ligne de commande pour le faire fonctionner:

Linux/Max:

./gradlew android: installDebug android: exécuter

Fenêtres:

gradlew android: installDebug android: run

Je vais essayer de vous mettre en route lorsque l'utilisateur se connectera et je parie que vous pouvez le prendre à partir de là. Si vous rencontrez des problèmes, n'hésitez pas à demander. Certaines parties sont arbitraires et basées sur la préférence.

Avant de commencer, quelques petites choses à garder à l'esprit sont:

  1. Pour que cette fonctionnalité du jeu libGDX, le test doit être fait avec un émulateur Android/appareil, car la version de bureau a un autre signe Facebook -en écran/interface que Android.
  2. Vérifiez que l'émulateur/périphérique Android est connecté à Internet lors du test de la fonctionnalité Facebook.
  3. L'API Facebook fournit une activité de connexion (page de connexion) pour l'application Android, qui sera ajoutée à AndroidManifest.xml dans les étapes suivantes. (Ne couvre pas les activités de connexion personnalisée ici.)

Étapes:

Configurer le fichier principal gradle

Répertoire: PROJECT_ROOT/build.Pour clarifier, le fichier gradle principal est le projet Root -> build.gradle, pas Project Root -> core -> build.gradle.

Ajouter:

gdxFacebookVersion = '1.4.1' 

Under:

allprojects { 
    ... 
    ext { 
     ... 
     // here 
    } 
    ... 
} 

Ajouter:

compile "de.tomgrill.gdxfacebook:gdx-facebook-android:$gdxFacebookVersion" 

Under:

project(":android") { 
    ... 
    dependencies { 
     ... 
     // here 
    } 
} 

Ajouter:

compile "de.tomgrill.gdxfacebook:gdx-facebook-core:$gdxFacebookVersion" 

Under:

project(":core") { 
    ... 
    dependencies { 
     ... 
     // here 
    } 
} 

Notez que l'on est ...:gdx-facebook-android:... et l'autre est ...:gdx-facebook-core:....

Configurer le fichier gradle Android

Répertoire: PROJECT_ROOT /android/build.gradle

Assurez-vous que le minSdkVersion n'est pas en dessous de 15, tel que requis par l'API Facebook. Cela sera probablement défini sur 9 par défaut, si l'outil d'installation libGDX officiel a été utilisé pour créer le projet.

android { 
    ... 
    defaultConfig { 
     ... 
     minSdkVersion 15 
     ... 
    } 
    ... 
} 

Cette capture d'écran peut répondre à une autre question, ou deux, que je pense que vous pourriez avoir à ce stade. C'est un projet libGDX qui utilise avec succès l'API GDXFacebook; Bien que, j'ai changé le applicationId pour l'occasion.

enter image description here

magasin Facebook App ID de l'application dans un fichier XML

Répertoire: PROJECT_ROOT/android/res/valeurs/

Ajouter un nouveau fichier XML, lequel pourrait arbitrairement nommer "facebook.xml", ou simplement utiliser le fichier "strings.xml" qui devrait déjà être là.

Maintenant, ajoutez ce qui suit au fichier XML:

<string name="facebook_app_id">Your_Facebook_API_ID</string> 

Exemple:

<string name="facebook_app_id">1559365201012064</string> 

Ajouter la permission Internet et FacebookActivity au AndroidManifest.xml

Répertoire: PROJECT_ROOT/android/AndroidManifest.xml

Ajouter:

<uses-permission android:name="android.permission.INTERNET" /> 

Under:

<manifest xmlns:android="htt ... > 
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="20" /> 
    // here 
    ... 
</manifest> 

Ajouter:

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" /> 
<activity android:name="com.facebook.FacebookActivity" 
      android:configChanges= 
       "keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" 
      android:label="@string/app_name" /> 

Under:

<manifest xmlns:android="htt ... > 
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="20" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    ... 
    <application 
     android:allowBackup="true" ... > 
     <activity 
      android:name=" ... > 
      ... 
     </activity> 
     // here 
    </application> 
</manifest> 

Ajouter une classe d'aide dans le répertoire source de base

Répertoire: PROJECT_ROOT/core/src/[somewhere_around_here]

Partout dans le répertoire ci-dessus, ajoutez la classe suivante (ou votre aide classe pour faire le même travail fait):

https://github.com/ronrihoo/GDX-Facebook-API-Helper/blob/master/FacebookApi.java

(sauvegarde: https://www.snip2code.com/Snippet/2695867/Example-helper-class-for-GDXFacebook)

A partir de l'un de vos classes principales, créer une instance de FacebookApi (la classe d'aide arbitraire), comme suit:

... 
// TODO: not the best place to keep the app ID; change later 
private static final String API_APP_ID = "Your_App_ID"; 
private FacebookApi facebookApi; 
... 

// and instantiate in a method (or constructor) 
    private void setupFbApiInst() { 
     facebookApi = new FacebookApi(API_APP_ID); 
    } 

test Facebook sign-in

Utilisez l'instance d'aide pour appeler la méthode signIn(), qui devrait alors, à elle seule, gérer l'écran de connexion/l'activité pour l'utilisateur (vous n'avez pas à construire cet écran, puisqu'il est fourni par l'API Facebook):

... 
facebookApi.signIn(); 
... 

Le dernier morceau de code, ci-dessus, pourrait idéalement aller dans l'écoute d'un bouton, comme ceci:

fbSignInButton.addListener(new ClickListener() { 
    @Override 
    public void clicked() { 
     facebookApi.signIn(); 
    } 
}); 

Dans ce cas, lorsque le bouton a été cliqué, le signe dans l'activité Facebook devrait apparaître (la capture d'écran recadrée suivante est à partir d'une tablette).

enter image description here

Au niveau de base, qui devrait être pour avoir le signe de l'utilisateur à Facebook.

Les prochaines étapes

Pour le reste de vos objectifs, en regardant à travers l'exemple suivant devrait aider, comme vous le modifier et de construire sur la classe d'aide de l'API Facebook arbitraire (ou cependant vous choisissez de construire cette fonction) .

https://github.com/TomGrill/gdx-facebook-app/blob/master/core/src/de/tomgrill/gdxfacebook/app/GdxFacebookSampleApp.java

Vous pourriez avoir à modifier les paramètres de l'application sur le site developers.facebook.com.

La prochaine chose à gérer serait probablement les autorisations Facebook. La classe d'aide arbitraire, FacebookApi.Java, commence avec les permissions de base comme suggéré dans le wiki GDXFacebook et les docs de l'API Facebook.

Vous devrez ajouter plus d'autorisations si nécessaire. La classe GdxFacebookSampleApp.java, liée ci-dessus, est un bon exemple pour commencer.

Cela devrait fonctionner comme pour moi. Vous devrez peut-être apporter des modifications, au besoin, et implémenter votre propre gestion des erreurs pour vous aider à résoudre les problèmes.

Je prévois que quelques problèmes se produiront entre ces étapes et, pour le moment, je ne peux pas encore commenter; Cependant, je peux répondre en éditant la réponse. Alors n'hésitez pas à poser des questions et je vais réagir/répondre dès que je serai disponible.