我正在开发一个在Node.js上使用一个GCP API(自然语言)的小应用程序。我按照此处的说明操作:https://cloud.google.com/docs/authentication/getting-started并下载了密钥文件并设置了env var GOOGLE_APPLICATION_CREDENTIALS
。
我当地的一切都很好。
现在我想从https://glitch.com/运行它。在那里,我有一个不共享的私有.env
,但其他一切都是公开的。所以我不能上传密钥文件,因为它是公开的。
有没有办法让一个env var(我可以保密)哪个密钥文件包含哪些信息?
谢谢!
答案 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)