Google 服务帐户身份验证失败 (node.js)
Google Authentication with Service Account fails (node.js)
我正在尝试一个 (node.js) 示例应用程序来根据 Google API 进行身份验证,然后发出 Google 云端硬盘请求。我尝试 运行 的示例来自 googleapis node.js 库的 github 自述文件 using jwt:
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,我收到错误 'Invalid impersonation prn email address.'.
我已经根据文档创建了服务帐户客户端 ID、服务电子邮件和证书指纹。我必须指定额外的东西吗?我的范围不正确吗?如果是,应该是什么?
Google 驱动器 API 在 Google 开发者控制台中启用。我也激活了试用账号。
呃,在尝试了很多事情之后,结果很简单:在没有 'impersonate'-email 的情况下做上面的示例就成功了。代码:
var jwtClient = new googleapis.auth.JWT(
'123...xyz@developer.gserviceaccount.com',
'./key.pem',
null,
['https://www.googleapis.com/auth/drive']);
自述文件中的示例在示例 (here) 中作为完整文件提供。
我正在尝试一个 (node.js) 示例应用程序来根据 Google API 进行身份验证,然后发出 Google 云端硬盘请求。我尝试 运行 的示例来自 googleapis node.js 库的 github 自述文件 using jwt:
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,我收到错误 'Invalid impersonation prn email address.'.
我已经根据文档创建了服务帐户客户端 ID、服务电子邮件和证书指纹。我必须指定额外的东西吗?我的范围不正确吗?如果是,应该是什么?
Google 驱动器 API 在 Google 开发者控制台中启用。我也激活了试用账号。
呃,在尝试了很多事情之后,结果很简单:在没有 'impersonate'-email 的情况下做上面的示例就成功了。代码:
var jwtClient = new googleapis.auth.JWT(
'123...xyz@developer.gserviceaccount.com',
'./key.pem',
null,
['https://www.googleapis.com/auth/drive']);
自述文件中的示例在示例 (here) 中作为完整文件提供。