2014-07-02 7 views
6

मैं Google API Node client के साथ नए Gmail API उपयोग करने के लिए कोशिश कर रहा हूँ। मैंने डेवलपर कंसोल से एक नई परियोजना बनाई, एक नया "सेवा खाता" क्लाइंट आईडी सेट किया, और एपीआई तक पहुंच को सक्षम किया।त्रुटि 500 ​​Gmail API साथ backendError और गूगल एपीआई नोड ग्राहक

अवधारणा का एक सबूत के रूप में, मैं बस अपने इनबॉक्स में धागे सूची कोशिश कर रहा हूँ। जब मैं API explorer के लिए OAuth 2.0 टॉगल सक्षम करता हूं और अपना ईमेल पता दर्ज करता हूं, तो अनुरोध सफल होता है और मैं डेटा के साथ JSON प्रतिक्रिया देखता हूं।

अब मैं नोड में भी ऐसा ही करने की कोशिश:

var googleapis = require('googleapis'); 

var SERVICE_ACCOUNT_EMAIL = '...SNIP...'; 

// generated by: openssl pkcs12 -in ...SNIP...p12 -out key.pem -nocerts -nodes 
var SERVICE_ACCOUNT_KEY_FILE = 'key.pem'; 
var jwt = new googleapis.auth.JWT(
     SERVICE_ACCOUNT_EMAIL, 
     SERVICE_ACCOUNT_KEY_FILE, 
     null, 
     ['https://www.googleapis.com/auth/gmail.readonly']); 

googleapis 
    .discover('gmail', 'v1') 
    .execute(function(err, client) { 

     jwt.authorize(function(err, result) { 
      if(err) console.error(err); 
      else console.log(result); 

      client.gmail.users.threads.list() 
       .withAuthClient(jwt) 
       .execute(function(err, result) { 
        if(err) console.error(err); 
        else console.log(result); 
      }); 
     }); 
    }); 

सबसे पहले मैं authorize() कॉल, जो लगता है कि यह एक टोकन रिटर्न के परिणामों को मुद्रित, इसलिए मुझे लगता है मैं सभी OAuth सामान सेटअप ठीक है :

{ access_token: '...SNIP...', 
    token_type: 'Bearer', 
    expires_in: 1404277946, 
    refresh_token: 'jwt-placeholder' } 

तब मैं वास्तव में एपीआई का उपयोग करने की कोशिश, लेकिन मैं कोई त्रुटि मिलती है:

{ errors: 
    [ { domain: 'global', 
     reason: 'backendError', 
     message: 'Backend Error' } ], 
    code: 500, 
    message: 'Backend Error' } 

इस बिंदु पर, मुझे नहीं पता कि और क्या प्रयास करना है। मैं सोचता हूं ओएथ सामान ठीक से काम कर रहा है, क्योंकि मुझे कोई प्रमाणीकरण त्रुटियां नहीं मिली हैं। मैं भी सोचता हूं एपीआई स्वयं काम कर रहा है और मेरा खाता ठीक है, क्योंकि मैं इसे एपीआई एक्सप्लोरर के माध्यम से उपयोग कर सकता हूं। मुझे कोई संकेत नहीं दिख रहा है कि नोड लाइब्रेरी या तो गलती है। संक्षेप में, मुझे नहीं पता कि समस्या क्या है। कोई विचार?

उत्तर

0

आप सेवा खाता उपयोग कर रहे हैं जीमेल के लिए आपके अनुरोधों को प्रमाणित करने के लिए। जहां तक ​​मुझे पता है, आपके सेवा खाते में जीमेल नहीं होगा, केवल उपयोगकर्ताओं के पास जीमेल होगा। इस कारण से आपको उपयोगकर्ता के साथ OAuth2 प्रवाह करना होगा (see here for example)।

+1

हम्म, यह बहुत दिलचस्प है। मैं वही काम करने की कोशिश कर रहा हूं - अर्थात जीमेल एपीआई के साथ ओएथ 2.0 सर्विस अकाउंट का उपयोग करें और 500 बैकएंड त्रुटि को भी मार दें। क्या आपके पास एक स्रोत है जहां यह कहता है कि आप जीमेल एपीआई के साथ सेवा खाते का उपयोग नहीं कर सकते? मैंने सोचा कि क्योंकि यह उपयोगकर्ता के Google डेवलपर कंसोल के माध्यम से बनाया गया था, यह उस उपयोगकर्ता से जुड़ा होगा? – victorhooi

+0

हाँ, यह कहता है [यहां] (https://developers.google.com/gmail/api/auth/about-auth) कि प्रमाणन OAuth 2.0 प्रवाह के साथ एक उपयोगकर्ता के सत्यापन द्वारा किया जाता है और के सत्यापन के साथ सामान्य प्रमाणन प्रवाह का वर्णन करता है अंत उपयोगकर्ता: 1. विकास के दौरान, Google डेवलपर कंसोल में आवेदन रजिस्टर। 2. जब ऐप लॉन्च होता है, तो अनुरोध करें कि उपयोगकर्ता अपने Google खाते में डेटा तक पहुंच प्रदान करे। 3. यदि उपयोगकर्ता सहमति देता है, तो आपका आवेदन अनुरोध करता है और जीमेल एपीआई तक पहुंचने के लिए प्रमाण-पत्र प्राप्त करता है। 4. प्रमाण पत्र रीफ्रेश करें (यदि आवश्यक हो)। –

संबंधित मुद्दे