如何避免使用GOOGLE_APPLICATION_CREDENTIALS

时间:2018-03-23 10:13:35

标签: google-cloud-platform

我正在开发一个在Node.js上使用一个GCP API(自然语言)的小应用程序。我按照此处的说明操作:https://cloud.google.com/docs/authentication/getting-started并下载了密钥文件并设置了env var GOOGLE_APPLICATION_CREDENTIALS

我当地的一切都很好。

现在我想从https://glitch.com/运行它。在那里,我有一个不共享的私有.env,但其他一切都是公开的。所以我不能上传密钥文件,因为它是公开的。

有没有办法让一个env var(我可以保密)哪个密钥文件包含哪些信息?

谢谢!

2 个答案:

答案 0 :(得分:0)

我能想到的两种方式:

1)Use an API key. Natural Language API是支持使用API​​密钥的API之一。您可以将此密钥存储在.env

2)不要使用GOOGLE_APPLICATION_CREDENTIALS,而是使用JSON提供显式凭据来创建客户端。 This sample解释了如何提供显式凭据。 您可以将此JSON存储在.data中,该{J}是私有的per Glitch's docs.

编辑:将隐式更改为显式

答案 1 :(得分:0)

// 1. read json by InputStream
InputStream stream = context.getAssets().open("-----.json");
GoogleCredentials credentials = GoogleCredentials.fromStream(stream);
String projectId = ((ServiceAccountCredentials)credentials).getProjectId();

// 2. build SessionSettings
SessionsSettings.Builder settingsBuilder = SessionsSettings.newBuilder();
SessionsSettings sessionsSettings = settingsBuilder.setCredentialsProvider(FixedCredentialsProvider.create(credentials)).build();

// 3. create SessionsClient
SessionsClient sessionsClient = SessionsClient.create(sessionsSettings)