2014-07-02 12 views
6

Gmail API'u Google API Node client ile kullanmaya çalışıyorum. Geliştirici konsolundan yeni bir proje oluşturdum, yeni bir "Hizmet Hesabı" Müşteri Kimliği oluşturdum ve API'ya erişimi etkinleştirdim.Hata 500 backendError Gmail API'sı ve Google API'ları ile Düğüm İstemcisi

Kavramın bir kanıtı olarak, yalnızca gelen kutumdaki konuları listelemeye çalışıyorum. OAuth 2.0'ı API explorer için değiştirdiğimde ve e-posta adresimi girdiğimde, istek başarılı oluyor ve verilerle bir JSON yanıtı görüyorum.

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); 
      }); 
     }); 
    }); 

Öncelikle ben bir belirteç döndürür benziyor authorize() çağrısı sonuçlarını yazdırmak, bu yüzden ben düzgün tüm OAuth şeyler kurulum var düşünüyorum:

Şimdi Düğüm içinde aynısını yapmaya çalışacağım :

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

Sonra aslında API kullanmayı deneyin, ama bir hata alıyorum:

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

Bu noktada, başka ne denemem gerektiğini bilmiyorum. Ben düşünün OAuth şeyler düzgün çalışıyor, çünkü herhangi bir kimlik doğrulama hatası almadım. Ben de düşünün API kendisi çalışıyor ve hesabım iyi, çünkü API Explorer üzerinden kullanabilirsiniz. Düğüm kitaplığının da hatalı olduğuna dair bir işaret göremiyorum. Kısacası sorunun ne olduğu hakkında hiçbir fikrim yok. Herhangi bir fikir?

cevap

0

GMail'e isteklerinizi doğrulamak için Hizmet Hesabı'nı kullanıyorsunuz. Hizmet Hesabınızın bildiğim kadarıyla bir Gmail’i olmayacak, yalnızca kullanıcıların GMail’i var. Bu nedenle OAuth2 akışını kullanıcıyla yapmanız gerekecektir (see here for example).

+1

Hmm, bu oldukça ilginç. Aynı şeyi yapmaya çalışıyorum - Gmail API ile bir OAuth 2.0 Servis Hesabı kullanın ve aynı zamanda 500 Arka Uç Hatası'na da basıyorum. GMail API'sı ile Hizmet Hesabı kullanamadığınızı söylediğiniz bir kaynağınız var mı? Bunun bir kullanıcının Google Geliştirici Konsolu aracılığıyla oluşturulduğundan, bu kullanıcıyla ilişkilendirileceğini düşündüm. – victorhooi

+0

Evet, [burada] (https://developers.google.com/gmail/api/auth/about-auth) adlı kullanıcının, OAuth 2.0 akışına sahip bir kullanıcının kimliğini doğrulayarak ve kimlik doğrulama ile genel kimlik doğrulama akışını tanımlayarak gerçekleştirildiğini söylüyor. son kullanıcı: 1. Geliştirme sırasında, uygulamayı Google Developers Console'da kaydedin. 2. Uygulama başlatıldığında, kullanıcının Google hesabındaki verilere erişim izni vermesini isteyin. 3. Kullanıcı izin verdiği takdirde, uygulamanız Gmail API'sine erişmek için kimlik bilgileri ister ve alır. 4. Kimlik bilgilerini yenileyin (gerekirse). –

İlgili konular