我有一个带有Web客户端和Android客户端的Java应用程序引擎后端。 Android客户端使用生成的客户端库和网站使用端点的JavaScript客户端库。
我们在应用引擎上有3个环境:Dev,Staging和Production。 我已经将更新推送到dev,它正在开发应用程序和网站。
现在我已经更新了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应用也使用G +登录并出现以下错误(在Google云端控制台的日志中):
com.google.api.server.spi.auth.GoogleJwtAuthenticator authenticate: ClientId is not allowed: 986034197583-51qasim2gmqql5vc652vk3u3lpapegb6.apps.googleusercontent.com
应用程序未使用其他密钥库签名且SHA-1哈希值相同(我已检查过)。
API管理器中的凭据保持不变,不应该更改。我检查了所有,他们看起来正确。除非Google今天有一些愚蠢的失败或事情,否则这对我没有任何意义。
当我使用API Explorer测试API时,它正在运行。 (apis-explorer.appspot.com)
看起来API凭据不再链接到我的API。我发现很奇怪你无处可以启用或禁用你自己的API(只有谷歌的API)。用于激活API的错误中的链接不起作用,因为它是一个链接,就像它是Google API一样。
答案 0 :(得分:0)
事实证明后端配置有问题。我只用登台配置替换appengine-web.xml。但是我没有更改后端的clientID和weblientId,因为它们位于名为Constants.java的文件中,我必须手动设置它是DEV,STAGING还是PRODUCTION后端(aarggh)。这仍然标记为DEV。
我们确实需要这个后端的一个buildcript来防止这样的情况。因为我是Android开发人员,所以我只知道gradle。这个项目是由一个离开公司的Java开发人员开发的,现在我必须维护它。它使用Maven,因此我不知道如何制作不同的构建目标,例如在Android Studio中使用不同的常量。
也许有人在这里知道如何在Gradle中创建类似于类似的类似解决方案并生成BuildConfig.java常量。那会很棒。
修改强> 我现在正在创建maven配置文件,现在结合maven-war-plugin我可以为不同的构建类型制作不同的配置文件。这可用于不同的appengine-web.xml 请参阅:web.xml configuration based on Maven profile 我现在还在尝试在构建脚本中找到包含ANDROID_CLIENT_ID和WEB_CLIENT_ID的常量的东西。我无法从文件中加载它们,因为它们必须是常量,因为它们用于API的属性中。 我使用http://www.mojohaus.org/templating-maven-plugin/生成Contstants.java。我唯一无法工作的是它在切换配置文件时不会自动生成它。我仍然需要手动启动模板:filter-sources。