这个问题困扰着我很多天,当我们收到对回调URL的访问令牌时,如何才能将授权服务器上的访问令牌持久化。
考虑一个供多个用户使用的XYZ应用程序,该应用程序支持通过Facebook登录oAuth。
- 已完成的基本工作:
- XYZ App已在Facebook中注册,并且已注册了自己的客户端ID,客户端密钥和回调URL。
- XYZ应用程序公开了一个回调URL,该URL可以接受GET(用于授权码)和POST(用于访问令牌)请求。
- oAuth2.0授权码流程:
- XYZ应用程序向Facebook服务器请求具有客户端ID,response_type = code,grant,state和callback URL的授权。
- Facebook将请求用户许可以授予访问权限。
- 一旦用户批准许可,facebook将向XYZ应用发送授权码。
- 然后XYZ应用程序使用来自Facebook的授权代码以及客户端机密,回调URL和它将请求访问令牌的其他参数。
- Facebook现在将访问令牌发送到XYZ应用程序。
我的问题:
-
当Facebook将授权代码发送到回调URL时,我们如何知道与哪个用户相关的授权代码。
-
一旦获得访问令牌以回调URL,我们如何在数据库中保留相同的用户详细信息。
由于只有一个回调URL,该URL接受来自Facebook的所有请求,因此我们如何区分哪个请求是针对哪个用户的?