我目前正在nodejs服务器上发现OAuth标识,以便在api youtube上进行查询测试。
现在,它起作用了,我可以提出请求。只有两件事我有问题。
首先,每次我登录时,谷歌都会要求获得许可,尽管它已经被授予了权限(并且许可在我帐户上允许的应用程序中可见)。
根据这个回答“谷歌登录总是要求用户同意”,这不应该发生,尽管我在本地工作。
我的第二个问题可以帮助我回答第一个问题。当我研究OAuth时,我了解了刷新令牌的存在,它应该允许在新的访问令牌过期时创建新的访问令牌。
我只是不知道是由我来使用刷新令牌,还是库在发出请求时自己做?
我基于:https://developers.google.com/youtube/v3/quickstart/nodejs
每个会话都与包含令牌和所有客户端信息的OAuth2Client相关联
[现状]
刷新令牌由库处理,如图所示。仍然没有关于每次提示的答案。
在快速启动之后,当您通过授权时,您正在调用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