Keycloak KeyClope仅在第一次登录时获取Google刷新令牌

Keycloak KeyClope仅在第一次登录时获取Google刷新令牌,keycloak,google-oauth,google-authentication,google-openid,Keycloak,Google Oauth,Google Authentication,Google Openid,我用谷歌的keydape作为身份提供者。我需要从谷歌刷新令牌,以管理用户的日历。以下是我的KeyClope Google IDP设置: 登录后,我根据获取刷新令牌。看起来是这样的: { "access_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "expires_in": 3599, "refresh_expires_in": 0, "r

我用谷歌的keydape作为身份提供者。我需要从谷歌刷新令牌,以管理用户的日历。以下是我的KeyClope Google IDP设置:

登录后,我根据获取刷新令牌。看起来是这样的:

{
    "access_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "expires_in": 3599,
    "refresh_expires_in": 0,
    "refresh_token": "YYYYYYYYYYYYYYYYYYYYYYYYYYYY",
    "token_type": "Bearer",
    "id_token": "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ",
    "not-before-policy": 0,
    "scope": "openid https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile",
    "accessTokenExpiration": 1593706596
}
现在的问题是,当我第二次登录,然后再次尝试获取刷新令牌时,它消失了:

{
    "access_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "expires_in": 3599,
    "refresh_expires_in": 0,
    "token_type": "Bearer",
    "id_token": "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ",
    "not-before-policy": 0,
    "scope": "https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile openid",
    "accessTokenExpiration": 1593706782
}

我真的不知道这怎么可能。我想到的一件事是,keydove不尊重subquest登录上的“请求刷新令牌”设置,但我不知道如何验证这一点。

这不是keydove错误,而是谷歌规范。
刷新\u令牌
仅在用户首次授权时提供。以下是此行为的文档:

刷新\u令牌
:可用于获取新访问令牌的令牌。刷新令牌在用户撤销访问之前有效。同样,只有在对谷歌授权服务器的初始请求中将access_type参数设置为offline时,此字段才会出现在该响应中。-

如果要再次获取刷新令牌,必须:

  • 转到显示可访问您帐户的应用的页面:
  • 在第三方应用程序菜单下,选择您的应用程序
  • 单击删除访问权限,然后单击确定以确认
  • 您发出的下一个OAuth2请求将返回一个
    刷新\u令牌
    (前提是它还包括“access\u type=offline”查询参数
  • 有关