【发布时间】:2014-06-04 13:40:37
【问题描述】:
我正在尝试将 YouTube 数据 API V3 与 Node 一起使用,以尝试提供经过身份验证的代理来进行视频搜索。由于该服务将在服务器上运行,因此我创建了一个服务帐户。
这会导致下载密钥文件和以下信息:
我对 JWT 有非常基本的了解,但 OAuth2 page 上的服务部分建议您应该使用他们的库之一来完成它,而不是自己实现它。但是,他们没有在 supported libraries 中列出 Node 库。
稍加挖掘,我发现了 Google API Nodejs 客户端:https://github.com/google/google-api-nodejs-client,它声称受 Google 支持,并且开箱即用地支持 OAuth2。
文档非常少,身份验证示例涉及将 URL 打印到终端,然后在浏览器中访问它以生成令牌。我对源代码进行了挖掘,以查看它是否支持 JWT,并且它似乎确实内置了 JWTClient。
/**
* @constructor
* JWT service account credentials.
*
* Retrieve access token using gapitoken.
*
* @param {string=} email service account email address.
* @param {string=} keyFile path to private key file.
* @param {array=} scopes list of requested scopes.
* @param {string=} subject impersonated account's email address.
*
*/
function JWT(email, keyFile, key, scopes, subject) {
JWT.super_.call(this);
this.email = email;
this.subject = subject;
this.keyFile = keyFile;
this.key = key;
this.scopes = scopes;
this.GAPI = GAPI;
}
构造函数上方的这个文档注释似乎是这里唯一的解释,我仍然不确定如何使用这个函数。
我假设:
-
email是您的开发者帐户的电子邮件地址 -
keyFile是私钥的路径 -
key是私钥吗? (如果是,为什么还要包含路径?) -
scopes是您要访问的 API 范围数组 -
subject???
以前有没有人使用过这项服务,或者能够稍微解释一下这里的差异?
作为参考,这必须是服务器端,因为我需要对请求进行自治的身份验证,并且我不能只使用未经身份验证的请求,因为我在 200 个请求(或类似的请求)中超过了我的每日限额.
【问题讨论】:
标签: node.js api authentication google-api jwt