在Android中使用Facebook Achievement API

时间:2014-11-10 05:09:38

标签: android facebook facebook-graph-api facebook-opengraph facebook-android-sdk

我理解这可能看起来像是一般性问题,但是找到有关该主题的信息似乎非常困难,所以如果它存在于某个地方,我会很感激一个完整的示例\ guide \ source code link。

我正在开发Android游戏,并希望整合Facebook成就。 我想要的是在用户完成某个拼图时分享成就 - 因此它会显示在他们的Feed中并链接到我的应用。

这是facebook的官方文档: https://developers.facebook.com/docs/games/achievements

现在,当我最初开始整合Facebook SDK时,我认为阅读\写作成就是一件非常简单的事情(对于大多数游戏服务都是如此,例如Google Play)。

但似乎我需要走很长的路 - 创建一些带有HTML元数据的网站,以便facebook可以从中读取,定义新的Open Graph对象等等 - 这对于这样的功能来说似乎太过分了。

我的问题很简单 - 有没有明确的,用户友好的指南或示例,展示如何在Android游戏中使用Facebook的成就? 最好不要使用HTML元数据托管我自己的网站。

Facebook文档显然是一场噩梦。我从来没有像使用声称提供如此简单服务的SDK那样挣扎。 (特别是与Google Play游戏服务等同等服务相比时)。

1 个答案:

答案 0 :(得分:2)

我找到了自己的答案。

    • 为了避免在我自己的服务器中存储元标记,我使用Facebook的对象API来创建应用拥有的"成就"对象(我自己的自定义类型,而不是内置的"游戏成就")。 可以使用您的管理员帐户使用对象浏览器完成此操作:https://developers.facebook.com/tools/object-browser
    • 我唯一需要托管的是图片(因此我可以填充图片网址字段)。如果我希望避免这种情况,我可以直接从我的移动应用程序上传图像到Facebook并将它们连接到用户拥有的对象(但不是应用程序拥有的对象)。
    • 现在,我使用自己的自定义操作来获得成就。我打电话给它" Solve" (解决一个难题),它有一个自定义ID整数字段供我自己使用。我创建了一个自定义故事,连接" Solve"行动到我的"益智" (成就)对象。
    • 该动作被定义为" unique" (不超过一个动作对象对) - 所以它的确表现得像一个成就。
    • 可以使用Graph API发布故事(action-object): https://developers.facebook.com/docs/android/open-graph (当然,其他平台也是如此)
    • 该操作可以标记为"明确共享" (https://developers.facebook.com/docs/android/open-graph#apicalls-step4),以便直接在播放器的时间轴上显示。
    • 为了阅读玩家现有的成就,我使用Graph API请求从玩家的个人资料中读取某种类型的当前动作。我不需要额外的权限: https://developers.facebook.com/docs/opengraph/using-actions/v2.2#read
    • 由于我将自定义ID属性附加到每个操作,因此我可以轻松地将玩家过去的操作识别为与我的游戏成就ID相关。