AppEngine API客户端认证在更新后停止工作



我有一个Java应用引擎后端与web客户端和Android客户端。Android客户端使用生成的客户端库,网站使用JavaScript客户端库作为端点。

我们在应用引擎上有3个环境:Dev, Staging和Production。我已经把更新推到开发,它正在应用程序和网站上工作。

现在我已经在Staging环境上更新了后端,并且遇到了很多身份验证问题。应用程序的身份验证和签名没有任何变化,所以我不明白这可能是什么。

网站客户

网站使用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 Cloud Console的日志中):

com.google.api.server.spi.auth.GoogleJwtAuthenticator authenticate: ClientId is not allowed: 986034197583-51qasim2gmqql5vc652vk3u3lpapegb6.apps.googleusercontent.com

应用程序没有使用另一个密钥库签名,并且SHA-1哈希值是相同的(我检查过)。

API Manager Credentials

API管理器中的凭据保持不变,不应该更改。我都检查过了,看起来是正确的。这对我来说毫无意义,除非谷歌今天出现了一些愚蠢的失败或其他事情。

api Explorer

当我用API资源管理器测试API时,它正在工作。(apis-explorer.appspot.com)

看起来API凭证不再链接到我的API。我觉得很奇怪,你无处可以启用或禁用你自己的api(只有谷歌的)。错误中用于激活API的链接不起作用,因为它是一个链接,就好像它是一个Google API。

结果显示后端配置有问题。我只是用暂存配置替换了appengine-web.xml。但我没有改变客户端和weblientId的后端,因为它们是在一个名为constant .java的文件,我必须手动设置,如果它是一个DEV, STAGING或生产后端(aarggh)。这仍然被标记为DEV。

我们真的需要一个构建脚本来防止这种情况的发生。因为我是Android开发者,所以只会gradle。这个项目是由一个离开公司的Java开发人员开发的,现在我必须维护它。它使用Maven,所以我不知道如何使不同的构建目标像在Android Studio中使用不同的常量。

也许这里有人知道我如何在gradle中制作类似的解决方案,并生成BuildConfig.java常量。那太好了。

编辑我现在正在创建maven配置文件,现在结合maven-war-plugin,我可以为不同的构建类型制作不同的配置文件。这对于不同的appengine-web.xml是可用的参见:基于Maven配置文件的web.xml配置我现在仍然试图找到一些东西,包括常数ANDROID_CLIENT_ID和WEB_CLIENT_ID在构建脚本。我不能从文件中加载它们,因为它们必须是常量,因为它们在API的属性中使用。我使用http://www.mojohaus.org/templating-maven-plugin/生成constants .java。我唯一不能做的是,当切换配置文件时,它不会自动生成它。我仍然需要手动启动模板:filter-sources.

最新更新