Google Oauth 2.0 最小用户交互

Google Oauth 2.0 minimum user interaction

我们有一个要求,我们的用户想要与各种 Google API 进行交互,因此我们需要针对 Google 的授权服务器的 OAuth2.0 授权。

我们的约束是我们使用的是单个网页前端,并且不想为了获得用户授权而重定向到我们的页面之外。

在理想情况下,用户会在我们的网页上选中一个框或单击一个按钮,然后使用此输入,我们将收到访问令牌和刷新令牌,而无需用户直接与 Google 交互。这样的想法是否可能,或者某种形式的用户交互在初始步骤中是必须的。

我们已经阅读了一些关于搭载 Oauth2.0 和 OpenConnectId 的参考资料,但是我们不确定是否适用于这种情况。任何建议或意见将不胜感激

提前致谢

我猜你需要OAuth2的Refresh Token流

刷新OAuth2的令牌:

刷新令牌是一个字符串,表示授予的权限 资源所有者的客户端。该字符串通常是不透明的 客户端。令牌表示用于检索的标识符 授权信息。与访问令牌不同,刷新令牌是 仅供授权服务器使用,永远不会发送 到资源服务器。

  +--------+                                           +---------------+
  |        |--(A)------- Authorization Grant --------->|               |
  |        |                                           |               |
  |        |<-(B)----------- Access Token -------------|               |
  |        |               & Refresh Token             |               |
  |        |                                           |               |
  |        |                            +----------+   |               |
  |        |--(C)---- Access Token ---->|          |   |               |
  |        |                            |          |   |               |
  |        |<-(D)- Protected Resource --| Resource |   | Authorization |
  | Client |                            |  Server  |   |     Server    |
  |        |--(E)---- Access Token ---->|          |   |               |
  |        |                            |          |   |               |
  |        |<-(F)- Invalid Token Error -|          |   |               |
  |        |                            +----------+   |               |
  |        |                                           |               |
  |        |--(G)----------- Refresh Token ----------->|               |
  |        |                                           |               |
  |        |<-(H)----------- Access Token -------------|               |
  +--------+           & Optional Refresh Token        +---------------+

           Figure: Refreshing an Expired Access Token

图 2 中所示的流程包括以下步骤:

(A) 客户端通过身份验证请求访问令牌 授权服务器并提供授权许可。

(B) 授权服务器对客户端进行认证并验证 授权授予,如果有效,则颁发访问令牌 和一个刷新令牌。

(C) 客户端向资源发起受保护的资源请求 服务器通过出示访问令牌。

(D) 资源服务器验证访问令牌,如果有效, 满足要求。

(E) 重复步骤 (C) 和 (D),直到访问令牌过期。如果 客户端知道访问令牌过期,它跳到步骤(G); 否则,它会发出另一个受保护的资源请求。

(F) 由于访问令牌无效,资源服务器returns 无效令牌错误。

(G) 客户端通过身份验证请求新的访问令牌 授权服务器并提供刷新令牌。这 客户端身份验证要求基于客户端类型 以及授权服务器策略。

(H) 授权服务器对客户端进行认证并验证 刷新令牌,如果有效,则发出一个新的访问令牌(并且, 可选地,一个新的刷新令牌)。

Resource Refs

根据您的情况,您可以尝试使用Ajax调用来满足您的要求。