我正在尝试将照片上传到Google功能(使用Google和GIS)到我正在开发的web应用程序中,但似乎找不出如何让用户身份验证的时间超过访问令牌的指定过期时间(即1小时),而不提示用户或打开弹出窗口。
https://github.com/googleworkspace/browser-samples/blob/master/drive/quickstart/index.html提供的示例代码迫使用户单击“刷新”按钮以获得新的令牌,但这意味着我必须强迫用户每小时登录一次,这并不理想(因为用户每次使用该应用程序的时间可能会超过一小时)。
根据过期的说法,这似乎是故意的。但是,在仔细观察了一下之后,我发现人们应该使用刷新令牌来生成一个新的访问令牌,该令牌在另一个小时后到期。假设您每45分钟生成一个新令牌(这实际上是Google的另一篇文章所建议的,但我现在似乎找不到它),那么您就不必担心这种重新身份验证了。
但是,我不知道如何获得刷新令牌。
未接收Google OAuth刷新令牌建议将access_type=offline作为查询参数发送,但我不使用任何重定向,而且前面提到的initTokenClient和requestAccessToken文档没有提到access_type参数。
最近我得到的是定期调用requestAccessToken方法,但这仍然会弹出一个弹出,让用户再次登录,这正是我想要避免的。即使使用requestAccessToken({ prompt: "" }),也会弹出这个弹出窗口,但是它至少在没有任何用户输入的情况下登录。有什么办法完全禁用这个弹出窗口吗?
最坏的情况是,我强迫用户每小时重新认证一次,但这似乎会导致一个不太理想的用户体验。任何帮助都是非常感谢的。
发布于 2022-06-18 23:13:16
我已经完成了GIS代码,并且可以确认提示符=‘’和‘none’没有按照requestAccessToken文档所暗示的方式实现。GIS总是打开弹出式窗口。提示参数只更改弹出部分发生的情况。GIS中也没有令牌存储或缓存功能,只有弹出功能。
当前提示参数行为通过基于OAuth 2.0流量比较表的设计来查看。只有当用户调用需要访问令牌的操作时,才应该刷新访问令牌。
这给我们留下了非常糟糕的UX体验,弹出必须每小时左右短暂地打开和关闭。另一种方法是使用授权代码流。但是它需要实现一种机制,将访问令牌从后端发送回客户端。
发布于 2022-06-02 16:35:32
对于浏览器来说,按钮流和同意弹出行为是有意获取访问令牌的,当配置将提示设置为空字符串时,会在每个请求:prompt=''上禁止用户弹出。
使用auth代码使用代码模型并将刷新令牌交换为访问令牌是您要寻找的内容,如果您希望在用户不在场的情况下执行操作,或者必须使用按钮按下之类的手势来触发令牌请求。
https://stackoverflow.com/questions/72080698
复制相似问题