App Engine API 客户端身份验证在更新后停止工作
AppEngine API client-authentification stopped working after update
我有一个 Java 应用引擎后端,带有一个网络客户端和一个 Android 客户端。 Android 客户端使用生成的客户端库和网站 Java 端点的脚本客户端库。
我们在 App Engine 上有 3 个环境:Dev、Staging 和 Production。
我已经将更新推送到开发人员,它正在应用程序和网站上运行。
现在我已经更新了暂存环境的后端,但遇到了很多身份验证问题。应用程序的身份验证或签名没有任何变化,所以我不明白它是什么。
网站客户端
网站使用 G+ 登录,在调用自定义应用程序引擎的方法后 API 出现以下错误:
"Access Not Configured. has not been used in project 986034197583 before or it is disabled. Enable it by visiting [url] then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."
发现#restDescription 成功并显示了方法。
Android 客户
Android 应用程序也使用 G+ 登录并给出以下错误(在 Google 云控制台的日志中):
com.google.api.server.spi.auth.GoogleJwtAuthenticator authenticate: ClientId is not allowed: 986034197583-51qasim2gmqql5vc652vk3u3lpapegb6.apps.googleusercontent.com
该应用未使用其他密钥库签名,并且 SHA-1 哈希值相同(我检查过)。
API 经理证书
API 管理器中的凭据保持不变,不必更改。我检查了所有这些,它们看起来是正确的。这对我来说毫无意义,除非 Google 今天有一些愚蠢的失败或其他事情。
APIs 资源管理器
当我使用 APIs Explorer 测试 API 时,它正在运行。 (apis-explorer.appspot.com)
看起来 API 凭证不再 link 到我的 API。我觉得很奇怪,你在任何地方都无法启用或禁用你自己的 API(只有 Google)。错误中的 link 激活 API 不起作用,因为它是一个 link 就好像它是一个 Google API.
原来后端配置有问题。我只用暂存配置替换了 appengine-web.xml。但是我没有更改后端的 clientID 和 weblientId,因为它们位于名为 Constants.java 的文件中,如果它是 DEV、STAGING 或 PRODUCTION 后端,我必须手动设置(aarggh)。这仍然被标记为 DEV。
我们真的需要一个用于此后端的构建脚本来防止出现这种情况。因为我是一名 Android 开发人员,所以我只认识 gradle。这个项目是由一个 Java 离开公司的开发人员开发的,现在我必须维护这个。它使用 Maven,所以我不知道如何像在使用不同常量的 Android Studio 中那样制作不同的构建目标。
也许这里有人知道我如何使用并生成 BuildConfig.java 常量来制作类似于 gradle 中的风味的模拟解决方案。那太好了。
编辑
我现在正在结合 maven-war-plugin 创建 maven 配置文件,我可以为不同的构建类型创建不同的配置文件。这可用于不同的 appengine-web.xml
参见:
我现在仍在尝试寻找一些东西以在构建脚本中包含 ANDROID_CLIENT_ID 和 WEB_CLIENT_ID 的常量。我无法从文件中加载它们,因为它们必须是常量,因为它们用于 API 的属性。
我用 http://www.mojohaus.org/templating-maven-plugin/ 生成 Contstants.java。我唯一无法开始工作的是它在切换配置文件时不会自动生成它。我仍然必须手动启动 templating:filter-sources.
我有一个 Java 应用引擎后端,带有一个网络客户端和一个 Android 客户端。 Android 客户端使用生成的客户端库和网站 Java 端点的脚本客户端库。
我们在 App Engine 上有 3 个环境:Dev、Staging 和 Production。 我已经将更新推送到开发人员,它正在应用程序和网站上运行。
现在我已经更新了暂存环境的后端,但遇到了很多身份验证问题。应用程序的身份验证或签名没有任何变化,所以我不明白它是什么。
网站客户端
网站使用 G+ 登录,在调用自定义应用程序引擎的方法后 API 出现以下错误:
"Access Not Configured. has not been used in project 986034197583 before or it is disabled. Enable it by visiting [url] then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."
发现#restDescription 成功并显示了方法。
Android 客户
Android 应用程序也使用 G+ 登录并给出以下错误(在 Google 云控制台的日志中):
com.google.api.server.spi.auth.GoogleJwtAuthenticator authenticate: ClientId is not allowed: 986034197583-51qasim2gmqql5vc652vk3u3lpapegb6.apps.googleusercontent.com
该应用未使用其他密钥库签名,并且 SHA-1 哈希值相同(我检查过)。
API 经理证书
API 管理器中的凭据保持不变,不必更改。我检查了所有这些,它们看起来是正确的。这对我来说毫无意义,除非 Google 今天有一些愚蠢的失败或其他事情。
APIs 资源管理器
当我使用 APIs Explorer 测试 API 时,它正在运行。 (apis-explorer.appspot.com)
看起来 API 凭证不再 link 到我的 API。我觉得很奇怪,你在任何地方都无法启用或禁用你自己的 API(只有 Google)。错误中的 link 激活 API 不起作用,因为它是一个 link 就好像它是一个 Google API.
原来后端配置有问题。我只用暂存配置替换了 appengine-web.xml。但是我没有更改后端的 clientID 和 weblientId,因为它们位于名为 Constants.java 的文件中,如果它是 DEV、STAGING 或 PRODUCTION 后端,我必须手动设置(aarggh)。这仍然被标记为 DEV。
我们真的需要一个用于此后端的构建脚本来防止出现这种情况。因为我是一名 Android 开发人员,所以我只认识 gradle。这个项目是由一个 Java 离开公司的开发人员开发的,现在我必须维护这个。它使用 Maven,所以我不知道如何像在使用不同常量的 Android Studio 中那样制作不同的构建目标。
也许这里有人知道我如何使用并生成 BuildConfig.java 常量来制作类似于 gradle 中的风味的模拟解决方案。那太好了。
编辑
我现在正在结合 maven-war-plugin 创建 maven 配置文件,我可以为不同的构建类型创建不同的配置文件。这可用于不同的 appengine-web.xml
参见: