java - Google App Engine 中的默认凭据 : Invalid Credentials error

标签 java google-app-engine oauth-2.0 credentials

我按照 https://developers.google.com/identity/protocols/application-default-credentials 上的教程进行操作在谷歌应用程序引擎上的我的应用程序中使用默认凭据。但是,在本地运行应用程序时,我收到 401 错误(凭据无效)

com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 OK { "code" : 401, "errors" : [ { "domain" : "global", "location" : "Authorization", "locationType" : "header", "message" : "Invalid Credentials", "reason" : "authError" } ], "message" : "Invalid Credentials" }

这是我使用的代码,包括教程的部分:

List<String> scopes = Lists.newArrayList("https://www.googleapis.com/auth/youtube.force-ssl");
        try{
            // Authorize the request.
            GoogleCredential credential = GoogleCredential.getApplicationDefault(); 
            if (credential.createScopedRequired()) {
                credential = credential.createScoped(scopes);   
            }
            // This object is used to make YouTube Data API requests.
            youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential)
                    .setApplicationName("youtube-cmdline-captions-sample").build();
        } catch (IOException e) {
            e.printStackTrace();
        }

我安装了 Google Cloud SDK,我使用 shell 授予访问我的 Google 帐户的权限

最佳答案

为了使用应用程序默认凭据,您需要执行几个步骤...您可以按照以下步骤操作,或者查看此 link .

  1. 首先要做的事情:安装 Google 云存储 SDK
  2. 确保您可以从 SDK 运行命令。如果您没有安装 python,则需要安装 python 2.7 或更高版本,以及 pyopenssl...
  3. 您需要通过运行以下命令从 SDK 中进行身份验证 gcloud auth activate-service-account [服务帐户电子邮件] --key-fil e [.p12 文件] 。当您运行此命令时,您应该会收到一条消息,告知您已激活服务帐户
  4. 您需要通过设置从 SDK 设置环境变量 GOOGLE_APPLICATION_CREDENTIALS 到 key 的 JSON 路径 CLOUDSDK_PYTHON_SITEPACKAGES 设置为 1,并设置项目

配置系统变量的命令...

set GOOGLE_APPLICATION_CREDENTIALS "secret.json path"
set CLOUDSDK_PYTHON_SITEPACKAGES 1
gcloud config set project "your project name"

在您对自己进行身份验证和授权后,如果您已正确设置环境,则可以开始使用应用程序默认凭据。

关于java - Google App Engine 中的默认凭据 : Invalid Credentials error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31651973/

相关文章:

java - 线程 "AWT-EventQueue-0"java.lang.NullPointerException 中出现异常(面板在完全加载之前显示?)

Android/IOS Secret 到期管理与客户端凭据流程

google-app-engine - 在没有 vm_settings 的谷歌云计算 node.js 应用程序的 app.yaml 中设置 f1-micro 资源限制

Spring OAuth 2 + Spring Data Neo4j Multi-Tenancy

php - 如何使用谷歌 API 获取服务帐户的授权 token ?

java - Java中同一个套接字上的两个不同对象

java.lang.IllegalStateException : Neither BindingResult nor plain target object for bean name 'versetmonth' available as request attribute 错误

java - 如何删除Android中特定联系人号码的所有短信

android - 使用 Cloud Endpoints 的自定义 HTTP 请求

java - 如何在交易中创建具有独特属性的实体?