我尝试使用(node.js)示例应用对Google API进行身份验证,然后发出Google云端硬盘请求。我试图运行的示例来自googleapis node.js库using jwt的github自述文件:
var jwtClient = new googleapis.auth.JWT(
'123...xyz@developer.gserviceaccount.com',
'./key.pem',
null,
['https://www.googleapis.com/auth/drive'],
'my.personal@gmail.com');
jwtClient.authorize(function(err, tokens) {
if (err) {
console.log(err);
return;
}
// Make an authorized request to list Drive files.
drive.files.list({ auth: jwtClient }, function(err, resp) {
// handle err and response
});
});
身份验证失败,并显示:
{ error: 'unauthorized_client',
error_description: 'Unauthorized client or scope in request.' }
我不能100%确定' my.personal@gmail.com'。使用我的客户ID,我收到错误'无效的假冒电子邮件地址。'。
我根据文档创建了服务帐户客户端ID,服务电子邮件和证书指纹。我是否必须指定其他内容?我的范围不正确吗?如果是,应该是什么?
Google云端硬盘控制台已启用Google云端硬盘API。我还激活了试用帐户。
答案 0 :(得分:13)
呃,在尝试了很多东西之后,结果很简单:做上面的例子没有“冒充” - 电子邮件它只是起作用。代码:
var jwtClient = new googleapis.auth.JWT(
'123...xyz@developer.gserviceaccount.com',
'./key.pem',
null,
['https://www.googleapis.com/auth/drive']);
自述文件中的示例作为示例(here)中的完整文件提供。