编辑:如果它能帮助其他人找到这个,那么Gaia在Chrome重启后清除Cookie的事实就是众所周知的行为。他们建议使用Chrome登录。查看更多here。
核心问题:如何在不使用chrome.identity API中的getAuthToken method的情况下从Chrome扩展程序中在后台获取Google OAuth访问令牌?此方法强制用户登录Chrome,这对我们的应用来说并不理想。我也无法使用身份API中公开的本机方法检索OpenID Connect ID令牌。
目前,我使用chrome.identity API中的launchWebAuthFlow method获取令牌。此方法启动了一个" Identity API范围批准UI"用户进行初始OAuth授权的窗口。此窗口(称为" gaia")具有自己的会话/ cookie数据,与浏览器会话分开。
在初始OAuth授权后,扩展程序会定期在后台检索访问令牌,然后从Google API(例如云端硬盘)获取数据。这很好用。但是,当用户退出并重新打开Chrome时,提取访问令牌失败 - gaia在Chrome重新启动时会丢失其会话Cookie,因此运行launchWebFlowAuth方法无法完成,因为Google无法对用户进行身份验证(除非我们再次提示用户登录Identity API范围审批用户界面)。 Others似乎遇到了同样的问题。
Google登录会非常理想,但它doesn't work in Chrome extensions(我得到的相同" 无效的cookiePolicy "错误作为该作者问题)。
非常感谢有关如何最好地处理此用例的任何建议!