google-oauth-utility
本套件為筆者為了讓Oauth Web Application認證的方法得以透過一些方式,使用refresh token來持續取回access token,讓存取google服務更方便而寫。
Installation
For command line command:
$ npm install google-oauth-utility -g
For module:
$ npm install google-oauth-utility
使用前...
在產生token前,我們需要先準備Google的Service Account持續取回access token,並透過第一次的手動認證取回Refresh Token,之後就可以透過這組Refresh Token來持續使用該使用者所授與權限的身份來存取服務...
取得Web Application Account:
請連線到:https://console.developers.google.com/project/[your-project-id]/apiui/credential 然後選取"Create new client id" > "Web application",然後依照Google Wizard操作建立Web Application Account。 Account建立後,在該Account處點選"Download JSON",並將下載檔案放置在固定位置,以便之後指定存取路徑。
產生 google oauth token file
透過套件中的gnutil指令,指定所要產出的config檔案位置,即可啟動產出token file的流程,透過web認證後,可以將auth token以json的方式記錄在指定的位置
gnutil -d [path-to-tmp-file]
Config file即上面透過產生Web Application Account後下載的JSON文件,會以下面格式顯示(name: .gauth.cfg):
{
"CLIENT_ID":"429************kunu.apps.googleusercontent.com",
"CLIENT_SECRET":"yq***********0A",
"REDIRECT_URL":"http://localhost:8888/oauth2callback",
"DEFAULT_SCOPES": [
"https://www.googleapis.com/auth/userinfo.profile",
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/plus.me"
]
}
如您使用預設路徑存取(不加-d參數,則系統會到家目錄底下存取該文件),您需要指定家目錄的位置,您環境變數中必須有HOME變數,在Mac或Linux系統下,以透過export HOME=...設定,Windows中則是透過set HOME=...設定。
另外,您可以直接在參數列帶入JSON文件中的值,範例如下:
gnutil -d [path-to-tmp-file] \
-c [your-client-id] \
-k [your-secret-key] \
-u [your-redirect-url] \
-s [your-scopes]
在程式中使用google-oauth-utility
var oauth = require('google-oauth-utility');
var scopes = [ 'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/userinfo.email'
];
var opts = {
clientId:'your-client-id',
clientSecret:'your-client-secret',
redirectUrl: 'your-redirect-url',
tmpPath:'/tmp/.gauth'
};
oauth.authflow(scopes, opts, function(err, tokens){
if(err) log.error(err);
console.log('process end..........');
console.log(tokens);
});