Gee*_*Jan 6 node.js oauth-2.0 google-oauth google-api-nodejs-client
我正在使用谷歌api客户端的节点版本.即:google-api-nodejs-client.
作为其中的一部分,我正在设置oauth-flow(确切地说是'谷歌网络服务器'流程.)
作为身份验证的一部分,这包括执行以下调用:
var oauth2Client = new OAuth2Client(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
Run Code Online (Sandbox Code Playgroud)
和
oauth2Client.setCredentials(userSpecificTokens)
Run Code Online (Sandbox Code Playgroud)
显然,第一个调用是特定于应用程序的,而第二个调用是特定于用户的.
在这种情况下,什么是好的做法?之一:
oauth2Client每个用户拥有1个缓存/保存令牌,并oauth2Client.setCredentials(userSpecificTokens)在每个请求中使用它们.这基本上为oauth2Client每个请求创建一个新的.oauthClient每个用户包括oauth2Client.setCredentials(userSpecificTokens)已经应用需要和之后高速缓存时被创建.我相信你的第一种方法是正确的
每个用户有 1 个 oauth2Client 和缓存/保存令牌,并在每个请求上使用 oauth2Client.setCredentials(userSpecificTokens) 注入它们。
但是,这条线不正确
这实际上为每个请求创建一个新的 oauth2Client 。
oauth2client 仅在您更新时创建一次 -new OAuth2Client(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
setCredentials()只是交换存储在该 OAuth2Client 对象中的凭据。基本上,这意味着如果您采用第二种方法,您将不必要地拥有许多额外的实例化 OAuth2Client。您唯一需要实例化“新”Oauth2Client 的时候是当您想要使用不同的令牌/密钥进行连接时。
将令牌存储在数据库或会话上,并通过在客户端的单个实例上设置凭据来完全按照您所描述的方式重用它们,这是很常见的。(https://security.stackexchange.com/questions/72475/should-we-store-accesstoken-in-our-database-for-oauth2)
作为参考,文档提供了一些见解,并基本上描述了您的第一种方法 - https://github.com/google/google-api-nodejs-client/#request-level-options
您可以指定每个请求要使用的身份验证对象。每个请求还继承在服务级别和全局级别指定的选项。
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |