深入研究GoogleCredential.Builder
类源代码后,我意识到了以下几点:
使用以下代码从资源InputStream构建私钥:
KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(this.getClass().getClassLoader().getResourceAsStream("Credentials.p12"), "notasecret".tocharArray());
PrivateKey pk = (PrivateKey)keystore.getKey("privatekey", "notasecret".tocharArray());
我能够将私钥加载到GoogleCredential Builder中:
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId("xxxxxx@developer.gserviceaccount.com")
.setServiceAccountScopes(Arrays.asList(DirectoryScopes.ADMIN_DIRECTORY_GROUP, DirectoryScopes.ADMIN_DIRECTORY_USER, DirectoryScopes.ADMIN_DIRECTORY_ORGUNIT))
.setServiceAccountUser(emailAccount)
.setServiceAccountPrivateKey(pk) //<----THIS
.build();