Google Oauth2 联系人 API returns 无效令牌:无状态令牌在一小时后过期

Google Oauth2 Contacts API returns Invalid token: Stateless token expired after an hour

我的设置有什么问题?

我正在使用 django-allauth 进行社交注册,最近我在它的范围内添加了联系人。一切正常。它现在请求管理联系人的权限,我可以通过 API.

获取用户的联系方式

但是一旦我发出请求以获取用户的联系人(当时我没有保存任何刷新令牌或访问令牌),一个小时后当我使用相同的令牌再次发出请求时,它显示此错误"Invalid token: Stateless token expired".

但是我仍然可以登录网站并且令牌没有改变。但是,当我注销并再次登录时,令牌发生变化,我可以再次使用该令牌获取联系人一小时。

有什么问题吗?我错过了什么?

看,当您登录网站时,您可能正在使用 cookie。所以基本上你可能正在使用同一个会话,实际上 api 没有被调用。

当您以隐身模式或在不同的浏览器中登录时,无法使用该cookie,所以这次调用了api。因此,令牌正在更改。

例如,如果在少数用户注册 google 后,您更改应用程序的范围,如果用户启用了 cookie 并且它尚未过期,当他访问您的网站,它只是让他登录。它不要求权限(您最近添加到范围)。但是当他注销并再次登录时,它会请求额外的权限并且令牌也会更改。

你应该做的是,你应该检查 django-allauth 的代码并清除它们是如何使用令牌的。您还必须知道,要获取刷新令牌,您必须在配置中启用离线访问。