我正在尝试将新的Gmail API与Google API节点客户端配合使用.我从开发人员控制台创建了一个新项目,设置了一个新的"服务帐户"客户端ID,并启用了对API的访问.
作为概念证明,我只是想在我的收件箱中列出线程.当我为API资源管理器启用OAuth 2.0切换并输入我的电子邮件地址时,请求成功,我看到带有数据的JSON响应.
现在我尝试在Node中做同样的事情:
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' }
然后我尝试实际使用API,但是我收到一个错误:
{ errors: [ { domain: 'global', reason: 'backendError', message: 'Backend Error' } ], code: 500, message: 'Backend Error' }
在这一点上,我不知道还有什么可以尝试.我认为 OAuth的工作正常,因为我没有收到任何身份验证错误.我还认为 API本身正常运行,我的帐户很好,因为我可以通过API Explorer使用它.我没有看到任何迹象表明Node库也有问题.简而言之,我不知道问题是什么.有任何想法吗?