App Engine 和 Google 游戏服务 clientId 冲突

Posted

技术标签:

【中文标题】App Engine 和 Google 游戏服务 clientId 冲突【英文标题】:App Engine and Google Game Services clientId collision 【发布时间】:2013-11-25 12:39:54 【问题描述】:

我将尝试使这个问题比我原来的帖子更简洁和易于理解。 我有一个 android 应用,我想使用 Google 游戏服务来记录成就和排行榜信息,并使用 App Engine 来存储用户数据和游戏信息。 它们中的每一个都单独工作,但我无法让它们一起工作。

当我通过开发者控制台创建与 Google 游戏服务相关联的应用程序时,clientId 已注册并在开发者控制台和云控制台中可见。

因此,此时我的云控制台中有 2 个项目,一个用于游戏服务,一个用于 App Engine。

但是,当我尝试在云控制台中为我的应用程序引擎项目创建具有我的 android 应用程序包名称和 SHA 证书指纹的相同 clientIds 时,我收到一条错误消息,指出该特定 clientId 已在使用中。当我尝试先在 App Engine 云控制台项目中创建 clientId,然后将它们添加到游戏服务开发者控制台中时,也会发生同样的事情。

有没有办法让 Android 应用同时使用 App Engine 和游戏服务?

【问题讨论】:

我重新表述了这一点,希望有人能够更清楚地理解我的问题。 【参考方案1】:

我想通了。事实证明它比我做的简单得多,一旦我回到第一方就变得很明显。

您可以这样做。 在云控制台中设置应用引擎项目。对于带有 Android 的 Cloud Endpoints,您需要创建一个 Android clientId 和一个 Web clientId。但是先不要创建Android clientId,后面会通过开发者控制台创建。如果您愿意,此时可以创建 Web clientId,也可以稍后再创建。

现在转到开发者控制台 -> 游戏服务 -> 添加新游戏。

确保您点击了“我已经在我的游戏中使用了 Google API”标签。现在您可以将这个新游戏链接到您的应用引擎项目。 (这就是我已经通过开发者控制台创建了一个游戏并且直到现在才重新访问该过程中的这一步时所怀念的。

现在您可以按照

上的其余说明进行操作

https://developers.google.com/games/services/console/enabling

当您通过开发者控制台为您的游戏服务游戏创建 clientId 时,它也会显示在云控制台中。

然后,您可以在端点代码中将其用作您的 Android ClientId(这就是您没有在上面创建 Android ClientId 的原因)。

如果您尚未创建 Android 客户端所需的 Web clientId,请立即创建。

您应该能够从您的 android 应用程序调用游戏服务,并从您的 android 应用程序调用应用程序引擎。

【讨论】:

【参考方案2】:

当您在 Google Play 开发者控制台的 GameServices 标签中添加新游戏后必须授权您的游戏时,您可以选择现有 API。它们的 clientID 将被添加到您现有的 Google Console 项目中。

在您的 Android 应用中,您可以使用为游戏服务选择的帐户名登录您的 App Engine。 如果您的 Activity 扩展 BaseGameActivity ,请像这样获取选定的帐户名:

Plus.AccountApi.getAccountName(getApiClient())

【讨论】:

以上是关于App Engine 和 Google 游戏服务 clientId 冲突的主要内容,如果未能解决你的问题,请参考以下文章

从Iphone本机客户端通过Google App Engine进行身份验证

连接 Google App Engine 和 Google Compute Engine

Google App Engine RPC 服务

Google App Engine Flexible 和 Google Container Engine 之间的区别?

如何在 Google App Engine 中实现互联网高分

如何通过 Google Drive 和 App Engine SDK 使用 Oauth2 服务帐户