के साथ एक सेवा खाते के साथ Google API प्रमाणीकरण मैं जावा एपीआई के माध्यम से एक Google सेवा खाते प्रमाणीकृत करने के लिए oauth API का उपयोग करने का प्रयास कर रहा हूं। मैं Google Bigquery तक पहुंचने के लिए इसका उपयोग करने की उम्मीद कर रहा हूं। मुझे अपने एपीआई अनुरोधों से एक "अमान्य अनुदान" दिया गया है।जावा एपीआई
/** Global instance of the HTTP transport. */
private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
/** Global instance of the JSON factory. */
private static final JsonFactory JSON_FACTORY = new JacksonFactory();
private static Bigquery bigquery;
public ServiceAccountExample() {
try {
try {
GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(BigqueryScopes.BIGQUERY)
.setServiceAccountPrivateKeyFromP12File(new File("GoogleBigQuery-privatekey.p12"))
//.setRefreshListeners(refreshListeners)
//.setServiceAccountUser("email.com")
.build();
credential.refreshToken();
bigquery = new Bigquery.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
//.setApplicationName("GoogleBigQuery/1.0")
.build();
listDatasets(bigquery, "publicdata");
return;
} catch (IOException e) {
System.err.println(e.getMessage());
}
} catch (Throwable t) {
t.printStackTrace();
}
}
SERVICE_ACCOUNT_EMAIL के फार्म के ईमेल पता है::
यहाँ कोड है, जो एक बुनियादी प्रमाणीकरण उदाहरण की एक प्रति है (जो BigQuery के लिए नहीं था .. लेकिन किसी अन्य Google एपीआई) है XXXXXXX @ developer.gserviceaccount.com
अगर मैं क्रेडेंशियल.फ्रेश टोकन() लाइन को हटा देता हूं, तो यह बिगक्वरी को पहली कॉल पर सूचियों में विफल रहता है ... अन्यथा यह क्रेडेंशियल पर विफल रहता है। ताज़ा करें() .. एक ही त्रुटि के साथ ।
क्या BigQuery सेवा खाता प्रमाणीकरण स्वीकार नहीं करता है?
मेरा मानना है कि मैंने एपीआई कंसोल के माध्यम से सब कुछ ठीक से किया है। मेरे पास है:
- बिग क्वेरी एपीआई पर पहुंच चालू कर दी गई।
- "एपीआई एक्सेस" टैब के तहत एक सेवा खाता बनाया गया।
- मेरी निजी कुंजी डाउनलोड की गई (जिसे ऊपर दिए गए कोड से संदर्भित किया गया है)।
- मेरे सेवा खाता उपयोगकर्ता को "टीम" टैब के नीचे पहुंच "संपादित कर सकते हैं" दिया गया।
- सक्षम बिलिंग।
क्या मुझे कुछ याद आया है? क्या वहां मेरे कुछ और करने की आवश्यकता है?
धन्यवाद ..
धन्यवाद, माइकल .. शर्मनाक रूप से, मेरी कुंजी सही ढंग से पढ़ी नहीं जा रही थी। मेरा कोड कुंजी के लिए एक पूर्ण पथ के साथ काम किया। – Sprooose
कुंजी कहाँ रखी जानी चाहिए? –
@ आकाशप्रशर को इसे पढ़ने के लिए कुंजी को स्थानीय रूप से रखा जाना चाहिए, लेकिन इसे सुरक्षित रखें, जैसे कि यह एक पासवर्ड था जो आपके पूरे क्लाउड प्रोजेक्ट तक पहुंच प्रदान करता है (जो अनिवार्य रूप से है) –