我試圖在節點上使用YouTube數據API V3,試圖提供一個經過身份驗證的代理服務器,用於執行視頻搜索。由於該服務將在服務器上運行,因此我創建了一個服務帳戶。在Nodejs中使用Google API進行服務身份驗證
這導致在下載密鑰文件及以下信息:
我有JWTs的一個很基本的瞭解,但對OAuth2 page服務部建議,你應該使用他們的圖書館之一做它,而不是自己實施它。但是,他們不會在supported libraries中列出節點庫。
多一點挖掘,我碰到了Google API Nodejs客戶端:https://github.com/google/google-api-nodejs-client,聲稱受谷歌支持,並支持OAuth2開箱即用。
文檔非常小,身份驗證的示例涉及將URL打印到終端中,然後在瀏覽器中訪問它以生成令牌。我周圍的源一挖,看看它是否支持智威湯遜和它似乎有一個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請求(或類似的東西)。
謝謝你的例子。如果我沒有提供'key',我遇到了一個問題,它將'scopes'參數視爲'keys',然後將範圍留空。你只是省略了「鑰匙」還是我完全錯過了某些東西? – imjared
我在一個階段遇到了類似問題,文檔似乎建議您可以將明文中的密鑰作爲參數傳遞,或者傳遞給密鑰文件的路徑。它並沒有解釋爲什麼,但似乎給我一個錯誤。我結束了通過兩個參數,它的工作(哈克,我知道)。 –
'''authClient = new googleapis.auth.JWT(config.jwt.email,config.jwt.keyPath,config.jwt.key,[https://www.googleapis.com/auth/youtube']); ''' –