是否可以通过服务帐户访问Google Play游戏服务API?

时间:2014-04-15 20:25:11

标签: google-app-engine google-api google-play-services google-play-games

我通过Google Play开发者控制台创建了游戏(它是ready for testing,但尚未发布)。

作为测试人员添加了两个服务帐户 - myappid@appspot.gserviceaccount.com(Google App Engine服务帐户)和64436212345-enq9gkd1abcdefghjec2kha39je5ojsc@developer.gserviceaccount.com(手动创建的服务帐户,它是在访问Google Play游戏服务API之前创建的)。第一个用于生产GAE环境,第二个用于开发环境(使用--appidentity_email_address运行)。这两个帐户都适用于Google AnalyticsAPI。

现在,我尝试使用这些帐户来使用Google Play游戏服务API。

以下代码用于授权并正常工作:

credentials = AppAssertionCredentials(scope=['https://www.googleapis.com/auth/games', 'https://www.googleapis.com/auth/plus.login'])
http = credentials.authorize(httplib2.Http(memcache))

但是我在尝试访问成就定义时遇到错误(也尝试获取应用程序元数据 - 遇到同样的问题):

response = service.achievementDefinitions().list().execute()

在开发环境中我得到了

<HttpError 404 when requesting https://www.googleapis.com/games/v1/achievements?alt=json returned "The requested application with ID 64436212345 was not found.">

并在制作中:

<HttpError 500 when requesting https://www.googleapis.com/games/v1/achievements?alt=json returned "">

那里有什么问题? Google Play Services API是否支持服务帐户?

更新。进一步分析显示,当我的Google Play应用程序的ID为760943112345时,64436212345是我的GAE应用程序的ID。

因此,我访问了Google Developer Console以获取应用程序760943112345,并添加了64436212345-enq9gkd1abcdefghjec2kha39je5ojsc@developer.gserviceaccount.commyappid@appspot.gserviceaccount.com作为其成员。它没有帮助。

然后我在那里生成了新的服务帐户ID,并使用此服务帐户在本地运行GAE。结果,我开始得到

<HttpError 401 when requesting https://www.googleapis.com/games/v1/applications/760943112345?alt=json returned "User has not completed registration.">

当然,我的服务帐户没有Google+个人资料。

2 个答案:

答案 0 :(得分:2)

我也在服务帐户和Google游戏服务方面苦苦挣扎,并且陷入了同一点(我的服务帐户没有G +帐户)。

我在Google literature(据称于2014年1月22日更新)中找到的唯一指示是服务帐户支持:

  

警告:目前很少有Google API支持服务帐户。目前,以下Google开发者服务支持服务帐户:

     
      
  • Google云端存储
  •   
  • Google Prediction API
  •   
  • Google URL Shortener
  •   
  • Google OAuth 2.0授权服务器
  •   
  • Google BigQuery
  •   

这是嵌入在一些google api php客户端文档中,但是我无法证明其有效性。

如果您有任何运气可以让我知道,我也会这样做!

答案 1 :(得分:1)

编辑:这是实际答案: 您拥有来创建另一个API项目并将其链接到您的游戏项目,如Getting Started with the Google Play Games Services Publishing API中所述。您添加到游戏项目中的服务帐户无法正常运行。此外,您必须通过Google Play Developer Console添加此新API项目,而不是通过Google Developers Console。据我记忆,你去后者才能得到你的钥匙。这整个局面让我永远想通了。

<小时/> 我保留以下文字以供将来参考:

编辑:我在下面写了答案,认为你没有谈论发布API。但你似乎是。或者它的早期版本。我希望以下答案对于希望通过服务帐户访问Management API的人有用:

我一直在努力,并得出结论,服务帐户不能与GPGS Management API一起使用,后者是处理成就和事物的API。以下是我用来得出这个结论的事实:

    提及服务帐户的GPGS文档中的
  • The only place是发布API。
  • Management API Docs包含有关授权要求的每个功能的说明,例如:&#34;此方法仅适用于您的开发者控制台的用户帐户。&#34;,而Publishing API Docs没有这样的描述。
  • The sample app for Management API不使用服务帐户。

如果在GPGS文档中更清楚一点,那就太好了。他们从GPGS页面链接的通用Google Cloud文档让我相信服务帐户会起作用。