के बजाय JSON कुंजी फ़ाइल का उपयोग कर सेट खाता खाता। मैं .p12 कुंजी फ़ाइल का उपयोग कर डोमेन विस्तृत प्रतिनिधिमंडल के साथ Google सेवा खाते का उपयोग करने में सक्षम हूं।Google सेवा खाता डोमेन विस्तृत प्रतिनिधिमंडल सेट सेवा खाता पी 12
मैं पी 12 फ़ाइल की बजाय JSON कुंजी फ़ाइल का उपयोग करना चाहता हूं, लेकिन मैं JSON कुंजी का उपयोग करते समय सेवा खाता आईडी सेट करने का तरीका नहीं समझ सकता।
आप उपयोगकर्ता को JSON कुंजी फ़ाइल का उपयोग करके प्रतिरूपण करने के लिए कैसे सेट करते हैं?
वर्क्स ठीक:
File p12File = new File(...);
GoogleCredential.Builder b = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY).setServiceAccountId(properties.getServiceAccountId())
.setServiceAccountPrivateKey(SecurityUtils.loadPrivateKeyFromKeyStore(SecurityUtils.getPkcs12KeyStore(),
new FileInputStream(p12File), "notasecret",
"privatekey", "notasecret"))
.setServiceAccountScopes(GOOGLE_SCOPE_LIST);
if (properties.getServiceAccountEmail() != null) {
b = b.setServiceAccountUser(properties.getServiceAccountEmail());
}
credential = b.build();
काम नहीं करता:
String jsonKeyContents = "{\n" +
" \"type\": \"service_account\",\n" +
" \"project_id\": \"sxxxxxxx0\",\n" +
" \"private_key_id\": \"csxxxxxxxxxxxxxxxx\",\n" +
" \"private_key\": \"-----BEGIN PRIVATE " +
"KEY-----\\nMIIxxxxxxxxxxsTbwzsbw" +
"==\\n-----END PRIVATE KEY-----\\n\",\n" +
" \"client_email\": \"[email protected]\",\n" +
" \"client_id\": \"1111111111111111111\",\n" +
" \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n" +
" \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n" +
" \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n" +
" \"client_x509_cert_url\": \"https://www.googleapis" +
".com/robot/v1/metadata/x509/xxxxx%40xxxxxx-xxxxx-123456.iam.gserviceaccount.com\"\n" +
"}";
try (InputStream privateKeyInputStream = new ByteArrayInputStream(jsonKeyContents
.getBytes("UTF-8"))) {
credential = GoogleCredential.fromStream(privateKeyInputStream).createScoped(GOOGLE_SCOPE_LIST);
}
JSON कुंजी का उपयोग करते समय सभी एंटरप्राइज़ उपयोगकर्ता सूची निर्देशिका एपीआई का उपयोग करने, मैंने एक त्रुटि संदेश मिलता है:
Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found
{
"code" : 404,
"errors" : [ {
"domain" : "global",
"message" : "Domain not found.",
"reason" : "notFound"
} ],
"message" : "Domain not found."
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
...
सभी मुद्दे इस तथ्य से संबंधित हैं कि सेवा खाता ईमेल रखने के लिए कोई जगह नहीं है।
मुझे यहां क्या याद आ रही है? क्या कोई ऐसा काम करने वाला उदाहरण है जिसके लिए वे कुछ कोड साझा कर सकते हैं?
इस एक ही सटीक जवाब है https://stackoverflow.com/a/45361542/1174024 –
याआ लगभग समान है। ज्यादातर लोगों को गलत JSON फ़ाइल मिलती है जिसमें पहली बार मेरे साथ होने वाले सभी महत्वपूर्ण जोड़े शामिल नहीं होते थे। –