我正在研究Java Web应用程序,我有一个关于OAuth 2.0授权代码流的问题,如here所述:

此流程使用GoogleAuthorizationCodeFlow实现 . 步骤如下:最终用户登录到您的应用程序 . 您需要将该用户与您的应用程序唯一的用户ID相关联 . 根据用户ID调用AuthorizationCodeFlow.loadCredential(String)以检查最终用户的凭据是否已知 . 如果是这样,我们就完成了 . 如果没有,请调用AuthorizationCodeFlow.newAuthorizationUrl()并将最终用户的浏览器定向到授权页面,以授予您的应用程序访问其受保护数据的权限 . 然后,Google授权服务器会将浏览器重定向回应用程序指定的重定向网址以及代码查询参数 . 使用code参数使用AuthorizationCodeFlow.newTokenRequest(String)请求访问令牌 . 使用AuthorizationCodeFlow.createAndStoreCredential(TokenResponse,String)来存储和获取用于访问受保护资源的凭据 .

关于最后两个步骤,我的问题是:

当授权服务器将浏览器重定向回重定向URL时,如何知道哪个用户授权访问?我得到的只是一个代码查询参数,其中包含授权代码 .

可以使用state参数吗?我已经读过它应该用于防止跨站点请求伪造,这是另一个目的 . 是否可以使用state参数来获得关系?

是的,我已阅读this post但我不知道会话解决方案是否适用于我的场景,因为我只有休息服务 .