Google API 刷新令牌不遵守 'incremental scope' 请求
Google API refresh tokens not honoring 'incremental scope' request
我们有一个与许多 Google API(日历、联系人、驱动器)集成的网络应用程序。我们有一个集成面板,用户可以在其中有选择地检查 on
每个集成。启用新集成后,我们保存新的刷新令牌 Google returns 并将旧的标记为 inactive
。到目前为止很棒。
问题是当我们请求一个新的范围(增量)时,Google 似乎正确地将范围添加到用户(如果我们从前端检查授予的范围,它会显示正确的列表),但是如果我们从访问令牌中检查范围,它只会列出配置文件和我们刚刚请求的任何内容。
因此,如果有人启用日历,该刷新令牌将具有 'profile' 和 'calendar',但如果他们随后启用云端硬盘,则新的刷新令牌将只有 'profile' 和 'drive',而不是 'calendar'。这对我们的云端硬盘工作人员来说尤其成问题,因为它会在尝试构建具有有效刷新令牌但范围无效的用户云端硬盘时产生大量错误。
在后端,我在兑现 code
之前使用 setIncludeGrantedScopes(true)
方法,据我所知,前端正在做它应该做的事情(它似乎具有预期的范围),但刷新令牌不包含在内。
Tips/tricks/gotchas/etc?
所以,事实证明这是一个相当简单的解决方案,但只记录在一个地方:当前端请求额外的范围时,它必须 also 发送向上所有当前范围。
如果不这样做,将导致返回的刷新令牌仅代表授权请求中包含的范围,而 app 将按预期逐步获得范围。
我们有一个与许多 Google API(日历、联系人、驱动器)集成的网络应用程序。我们有一个集成面板,用户可以在其中有选择地检查 on
每个集成。启用新集成后,我们保存新的刷新令牌 Google returns 并将旧的标记为 inactive
。到目前为止很棒。
问题是当我们请求一个新的范围(增量)时,Google 似乎正确地将范围添加到用户(如果我们从前端检查授予的范围,它会显示正确的列表),但是如果我们从访问令牌中检查范围,它只会列出配置文件和我们刚刚请求的任何内容。
因此,如果有人启用日历,该刷新令牌将具有 'profile' 和 'calendar',但如果他们随后启用云端硬盘,则新的刷新令牌将只有 'profile' 和 'drive',而不是 'calendar'。这对我们的云端硬盘工作人员来说尤其成问题,因为它会在尝试构建具有有效刷新令牌但范围无效的用户云端硬盘时产生大量错误。
在后端,我在兑现 code
之前使用 setIncludeGrantedScopes(true)
方法,据我所知,前端正在做它应该做的事情(它似乎具有预期的范围),但刷新令牌不包含在内。
Tips/tricks/gotchas/etc?
所以,事实证明这是一个相当简单的解决方案,但只记录在一个地方:当前端请求额外的范围时,它必须 also 发送向上所有当前范围。
如果不这样做,将导致返回的刷新令牌仅代表授权请求中包含的范围,而 app 将按预期逐步获得范围。