2
我正嘗試在Java Google App Engine應用程序中使用應用程序默認憑據。在本地運行時,證書工作正常,下面的示例代碼按預期記錄我的服務帳戶ID和訪問令牌。Google應用程序默認憑據不在雲中工作
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
是否有任何理由爲什麼應用程序默認憑據是空的雲?有一些配置,我錯過了嗎?根據Authentication Docs這應該只是自動工作:
如果您需要在Google App Engine上運行您的代碼,您應該使用應用程序默認憑據(ADC)。使用ADC的客戶端庫在運行時自動從App Engine獲取內置服務帳戶憑據。
我也看到這仍然。你能夠追查下來嗎? – Wendel
我從來沒有設法解決這個問題。最後,我只是將AuthCredentials.createForJson()用於我的服務帳戶密鑰文件。 – Wayzgoose
也有這個問題,但您目前無法從默認的appengine憑據中獲取該信息。如果你不得不冒充某人,你必須在你的資源中添加.json並手工分析它。 – Pievis