我们有一个与许多Google API(日历,联系人,驱动器)集成的webapp。我们有一个集成面板,用户可以在其中选择性地检查on
每个集成。启用新的集成后,我们将保存新的刷新令牌(Google返回)并将旧的令牌标记为inactive
。到目前为止很好。
问题是当我们请求一个新的范围(递增)时,Google似乎正确地将范围添加到了用户(如果我们从前端检查授予的范围,它会显示正确的列表),但是如果我们从访问令牌中检查范围,它将仅列出个人资料以及我们刚刚要求的内容。
因此,如果有人启用了日历,则刷新令牌将具有“配置文件”和“日历”,但是如果他们随后启用了云端硬盘,则新的刷新令牌将仅具有“配置文件”和“驱动器”,而没有“日历”。对于我们的云端硬盘工作人员而言,这尤其成问题,因为它将尝试生成具有有效刷新令牌但范围无效的用户云端硬盘,从而产生大量错误。
在后端,setIncludeGrantedScopes(true)
在兑现之前,我正在使用方法code
,据我所知,前端正在做应做的事情(它确实具有预期的作用域),但是刷新令牌不包含在内。
提示/技巧/陷阱/等?
所以,事实证明,这是一个相当简单的解决方案,但只在一个地方被记录:在前端请求额外的范围,它必须也发送了目前所有的作用域。
如果不这样做,将导致返回的刷新令牌仅代表授权请求中包含的范围,而应用程序将按预期方式逐渐获得范围。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句