提问者:小点点

谷歌认证-总是提示授权,我应该如何处理刷新令牌?


我目前正在nodejs服务器上发现OAuth标识,以便在api youtube上进行查询测试。

现在,它起作用了,我可以提出请求。只有两件事我有问题。

首先,每次我登录时,谷歌都会要求获得许可,尽管它已经被授予了权限(并且许可在我帐户上允许的应用程序中可见)。

根据这个回答“谷歌登录总是要求用户同意”,这不应该发生,尽管我在本地工作。

我的第二个问题可以帮助我回答第一个问题。当我研究OAuth时,我了解了刷新令牌的存在,它应该允许在新的访问令牌过期时创建新的访问令牌。

我只是不知道是由我来使用刷新令牌,还是库在发出请求时自己做?

我基于:https://developers.google.com/youtube/v3/quickstart/nodejs

每个会话都与包含令牌和所有客户端信息的OAuth2Client相关联

[现状]

刷新令牌由库处理,如图所示。仍然没有关于每次提示的答案。


共1个答案

匿名用户

在快速启动之后,当您通过授权时,您正在调用getToken

oauth2Client.getToken(code, function(err, token) {
   if (err) {
      console.log('Error while trying to retrieve access token', err);
      return;
   }
   oauth2Client.credentials = token;
   storeToken(token);
   callback(oauth2Client);
});

令牌对象响应包含access_token和refresh_token。refresh_token仅在您第一次登录时返回(如果令牌过期,您可以获得新的令牌),您需要存储它以生成新的访问令牌。

正如您在示例中还可以看到的,在授权函数中,您需要检查您以前是否存储了令牌。

然后,要使用刷新令牌,需要调用:

oauth2Client.setCredentials({
   refresh_token: YOUR_STORED_REFRESH_TOKEN
});

使用refresh_令牌设置凭据后,access_令牌将自动更新,您可以使用oauth2client再次发出请求。

我希望它是清楚的!

参考:https://developers.google.com/identity/protocols/OAuth2WebServer#offline