【问题标题】:Where does Android Studio hide upload permissions for an app engine project?Android Studio 在哪里隐藏应用引擎项目的上传权限?
【发布时间】:2014-10-20 17:13:52
【问题描述】:

我有一个工作应用程序引擎项目 (Java),这是我前段时间从模板创建的。上传一直运行良好,我不记得我在设置时输入了凭据。嗯,可能我在某个时候做过,但我不记得机制是什么。

现在我将项目切换到另一个应用引擎项目,该项目也有不同的管理员用户。我在 appengine-web.xml 中更改为新的 application-name-000 并开始上传,但 gradle/appengineUpdate 一直告诉我:

Oct 20, 2014 10:06:35 AM com.google.appengine.tools.admin.AbstractServerConnection send1
WARNING: Error posting to URL: https://appengine.google.com/api/appversion/getresourcelimits?app_id=application-name-000&version=2&
404 Not Found
This application does not exist (app_id=u'application-name-000').

确定该应用程序不存在,因为它是应用程序引擎的新项目;-) 我尝试将版本 2 临时设置为版本 1,这似乎不是问题。我用谷歌搜索,发现这似乎是一个权限问题,但我找不到任何提示我需要做什么或我可以在 Android Studio 中设置新权限的位置。

流程是什么?我是否需要将一些密钥从应用引擎复制到项目中,或者我可以在 Android Studio 中的哪里设置我的用户名/oauth?

【问题讨论】:

  • 是什么让您认为这是权限问题?错误消息非常明确:应用程序“application-name-000”不存在。您是否在 App Engine 控制台中创建了该应用程序?为什么要在应用名称后面加上“000”?
  • 正如 Daniel 指出的那样......只需在 console.developers.google.com 中创建您的应用,为其命名,然后编辑您的 app.yaml 以转到该应用
  • application-name-000 是我的 app-id [我只是让它变得不透明,因为我不想在这里发布]。我已经在应用程序引擎上创建了该应用程序,它以与我的 app.yaml 中完全相同的名称存在在那里 [这里是 appengine-web.xml,因为我使用的是 Java]。我认为这是一个权限问题,因为这个stackoverflow.com/questions/10407955/… 和这个stackoverflow.com/questions/7039200/… 以及我发现的其他帖子。
  • @Patrice 为什么你认为我可以创建一个项目并上传?这意味着我可以进行 URL 扫描并覆盖任何人的项目。我确信谷歌没有以这种方式实现它。必须有一种方法让 Android Studio 知道它是您的项目,而 IMO 只能使用凭据、密钥或 oauth 来工作。
  • 因为它是这样工作的。转到console.developers.google.com,创建新项目,它会给你一个ID。然后将该 ID 放入您的 app.yaml(或 appengine-web.xml)中。通常,每当您上传时都会询问您的凭据(使用命令行或应用程序引擎启动器......在其他一些情况下,它是您项目的配置文件)。也许您的 android 工作室“卡”在以前的帐户上,该帐户无权访问您的新项目

标签: google-app-engine intellij-idea gradle android-studio


【解决方案1】:

我终于找到了解决这个问题的方法。是的,这是一个权限问题(见下文进一步证明)。

Android Studio 使用 oauth 将项目连接到应用引擎。当您安装 Android Studio 并首次创建项目时,它会在您的主目录中创建以下文件:

.appcfg_oauth2_tokens_java (in Windows this is under c:\Users\{Username}\)

这是一个没有名称的文件,只是一个扩展名。此文件包含连接和上传到应用引擎的令牌。

如果 oauth 用户发生变化,Android Studio 使用了错误的凭据,上传失败。

解决问题:

  1. 删除文件。

  2. 命令行(!)调用 appengineUpdate,而不是从菜单(在 Windows 中,您通常从 Android Studio 和模块中打开终端,然后输入

    ..\gradlew appengineUpdate

  3. 它开始更新,由于缺少文件,Android Studio 会弹出打开您的浏览器,您可以在其中选择您的 Google 用户并授予权限。然后您会收到一个代码。

  4. 复制该代码并将其粘贴到终端中。没有输入框什么的。命令行只是停止并说 nothing。将您的代码粘贴到那里并按回车键。

然后将为您创建一个新文件,令牌保存到文件中,您的项目应该可以正常上传。

我在 http://code.google.com/p/googleappengine/issues/detail?id=8300 找到的文件提示以及如何复制代码的提示在 http://code.google.com/p/qt-google-calendar/issues/detail?id=2 (糟糕,Google)。

当我更改 build.gradle 文件时,可以看出这是一个权限问题:

appengine {
    downloadSdk = true
    appcfg {
        oauth2 = true
    }
}

oauth2 = true 产生了这个错误信息:

WARNING: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=...&version=2&
404 Not Found
This application does not exist (app_id=u'...').

而 oauth2 = false 产生了这个:

WARNING: Error posting to URL: https://appengine.google.com/api/appversion/getresourcelimits?app_id=...&version=2&
401 Unauthorized
Must authenticate first.

我们学到了什么?永远不要相信错误消息,无论它看起来多么明确。

【讨论】:

    【解决方案2】:

    您可以简单地更改第一个帐户的密码,当您尝试运行 appengineUpdate 时,它​​会提示您输入新帐户的详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-13
      • 2011-05-21
      • 1970-01-01
      • 2016-05-01
      • 2023-04-06
      • 2019-11-01
      • 1970-01-01
      • 2015-03-16
      相关资源
      最近更新 更多