pretty code

2019年1月28日 星期一

google-auth-library:DEP007 解決方式

使用 nodemailer 只要幾行 code 就可以發送 email

不過如果是使用 gmail 當寄件者
你只有 2 個選擇

1. 降低 gmail security policy (有風險)
2. 使用 OAuth2

為了安全起見
我這裡是使用第 2 種方式

可參考 Nick Noarch 的 Sending Emails with Node.js Using SMTP, Gmail, and OAuth2

雖然照他的方式可以順利的寄發 email

但 googleapis 這個 module 在 refresh token 時會有以下警告

google-auth-library:DEP007
The `refreshAccessToken` method has been deprecated, and will be removed
in the 3.0 release of google-auth-library. Please use the `getRequestHeaders`
method instead.


試了一下應該這樣可以解決了

const oauth2Client = new OAuth2(clientID, clientSecret, redirectURL);
oauth2Client.setCredentials({refresh_token: refresh_token});

// old way
oauth2Client.refreshAccessToken().then((tokens) => {
    var token1 = tokens.credentials.access_token;  
});

// new way
oauth2Client.getRequestHeaders().then(header => {
    var patten = 'Bearer ';
    var token2 = header.Authorization.substring(patten.length);
});

沒有留言: