我们在一个Google服务帐户中有多个项目,并且每个项目都有单独的GOOGLE_APPLICATION_CREDENTIALS
json文件。根据基于区域设置和projectID
的要求,我们必须使用相关的凭据json文件。
尝试通过环境变量加载,但只能接受一个文件路径,
设置环境变量
GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
如果请求来自该服务帐户中的任何项目,则期望验证成功。
答案 0 :(得分:0)
您需要直接从json文件设置凭据,而不是在环境变量中设置凭据。
from google.oauth2 import service_account
SERVICE_ACCOUNT_FILE = "/home/user/Downloads/[FILE_NAME].json"
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE)
project_id = "project_id"
session_id = "session_id"
session_client = dialogflow.SessionsClient(credentials=credentials)
session = session_client.session_path(project_id, session_id)
希望有帮助。
答案 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)
答案 2 :(得分:0)
您可以检查“-----.json”文件。
有 private_key 和 client_email。
您可以在代码中使用它们。 这工作正常。
let config = {
credentials: {
private_key: private_key,
client_email: client_email
}
};
// Create a new session
const sessionClient = new dialogflow.SessionsClient(config);
const sessionPath = sessionClient.projectAgentSessionPath(
projectId,
sessionId
);
这会很有帮助。