Google Application默认凭据无法在云中使用

时间:2016-07-11 14:22:46

标签: java google-app-engine

我尝试在Java Google App Engine应用中使用Application Default Credentials。在本地运行时,凭据正常工作,以下示例代码按预期记录我的服务帐户ID和访问令牌。

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

  //Literally one line of code for GAE credentials
  GoogleCredential credential = GoogleCredential.getApplicationDefault();

  LOGGER.log(Level.INFO, "Service Account Id: {0}", credential.getServiceAccountId());
  LOGGER.log(Level.INFO, "Access Token: {0}", credential.getAccessToken()); 
}

但是,当运行在云中部署的确切代码时,日志如下:

16:03:58.585 com.test.servlet.MyServlet doGet: Service Account Id: null
16:03:58.681 com.test.servlet.MyServlet doGet: Access Token: null

为什么应用程序默认凭据在云中为空?我缺少一些配置吗?根据{{​​3}},这应该会自动生效:

  

如果您需要在Google App Engine上运行代码,则应使用应用程序默认凭据(ADC)。使用ADC的客户端库在运行时自动从App Engine获取内置服务帐户凭据。

0 个答案:

没有答案