java - LibGdx Facebook分数

标签 java android facebook-graph-api libgdx

我正在使用Libgdx创建游戏,现在我已经到达用户可以连接到他的facebook帐户的部分,通过这种方式,用户可以将自己的得分与朋友进行比较。

我能够在我的项目中实现facebook sdk包,并在facebook和hashkey上获取应用程序ID。之后,我撞墙了。我已经尝试了所有可以在网上找到的可用资源,但是没有任何工作(花了2天时间)。

我了解的是,我需要在核心项目中创建一个接口,该接口将链接到我的android文件夹中的facebook身份验证类。

我尝试了很多在线项目,但都没有运气。

任何帮助或可用的教程将不胜感激。

最佳答案

我不确定您已经尝试了什么,但这是一个很好的来源:

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

在上面链接的Wiki的第3部分中,请注意:


  重要说明facebook-android-sdk是.aar文件。一些IDE(例如
  Eclipse)无法处理此文件类型。那意味着你
  必须使用命令行启动您的应用程序才能使其工作:
  
  Linux / Max:
  
  ./gradlew android:installDebug android:run
  
  视窗:
  
  gradlew android:installDebug android:run


我会尽力让您开始登录用户,然后打赌您可以从那里开始。如果您遇到问题,请随时提问。有些部分是任意的,并基于首选项。

开始之前,请记住以下几点:


对于libGDX游戏的此功能,应使用Android模拟器/设备进行测试,因为Desktop版本的Facebook登录屏幕/界面与Android不同。
测试Facebook功能时,请确保Android模拟器/设备已连接到互联网。
Facebook API为Android应用程序提供了登录活动(登录页面),将在以下步骤中将其添加到AndroidManifest.xml中。 (此处将不涵盖自定义登录活动。)


脚步:

配置主Gradle文件

目录:
project_root / build.gradle

为了澄清,主要的gradle文件是Project Root-> build.gradle,而不是Project Root-> core-> build.gradle。

加:

gdxFacebookVersion = '1.4.1' 


下:

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


加:

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


下:

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


加:

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


下:

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


请注意,一个是...:gdx-facebook-android:...,另一个是...:gdx-facebook-core:...

配置Android Gradle文件

目录:project_root / android / build.gradle

确保minSdkVersion不低于15,这是Facebook API要求的。如果使用了官方的libGDX设置工具来创建项目,则默认情况下该值可能设置为9。

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


此屏幕快照可能会回答另一个或两个问题,我觉得这可能是一个问题。这是一个libGDX项目,已成功使用GDXFacebook API。不过,我为此更改了applicationId

enter image description here

将应用程序的Facebook App ID存储在XML文件中

目录:
project_root / android / res / values /

添加一个新的XML文件,该文件可以任意命名为“ facebook.xml”,或者仅使用应该已经存在的“ strings.xml”文件。

现在将以下内容添加到XML文件:

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


例:

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


将Internet权限和FacebookActivity添加到AndroidManifest.xml

目录:
project_root / android / AndroidManifest.xml

加:

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


下:

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


加:

<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" />


下:

<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>


在核心源目录中添加帮助器类

目录:
project_root / core / src / [somewhere_around_here]

在以上目录中的任何位置,添加以下类(或您自己的帮助器类以完成相同的工作):

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

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

从您的一个主类中,创建一个FacebookApi实例(任意帮助程序类),如下所示:

...
// 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);
    }


测试Facebook登录

使用帮助程序实例调用signIn()方法,然后该方法应自行处理用户的登录屏幕/活动(您不必构建此屏幕,因为它是由Facebook API提供的) :

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


上面的最后一段代码可能理想地放在按钮的侦听器中,如下所示:

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


在这种情况下,单击按钮后,将显示Facebook登录活动(以下裁剪的屏幕截图来自平板设备)。

enter image description here

从根本上来说,应该就是让用户登录Facebook。

下一步

对于您的其余目标,在修改并建立在任意Facebook API帮助程序类上(或选择构建此功能)时,翻阅以下示例应该会有所帮助。

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

您可能需要在developers.facebook.com网站上调整应用程序设置。

接下来要处理的可能是Facebook权限。任意帮助程序类FacebookApi.java从GDXFacebook Wiki和Facebook API文档中建议的基本权限开始。

您必须根据需要添加更多权限。上面链接的GdxFacebookSampleApp.java类是一个入门的好例子。

这应该起作用,就像对我一样。您可能只需要根据需要进行修改,并实现自己的错误处理,以帮助指导您解决问题。

我预计这些步骤之间会发生一些问题,目前,我无法发表评论。但是,我可以通过编辑答案来回答。因此,随时提出问题,当我有空时,我会做出回应。

关于java - LibGdx Facebook分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46184907/

相关文章:

java - 在jsp中返回多个值

java - Android 乐谱渲染的可能性

android - 如何从 Facebook SDK 4.5 中的 Android 应用程序获取用户的个人资料图片、主要电子邮件、Facebook 链接?

android - 应用程序在按下后退键时强制关闭

ios - 如何自定义 fbfrienpickerview Controller 并在自定义表格 View 中显示

python - facebook 图 API : Posting on page: permission issue

java - android中日期格式问题

java - 如何引用实时 map 值

java - 私有(private)变量的继承

android - 如何从其他 Activity 中完成 Activity