我正在构建一个带有 Rails 后端的 iPhone 客户端。客户端通过 Oauth2 API 与服务器通信。我已经使用 oauth2 和 doorkeeper gems 进行了设置。
每个 API 请求都必须使用令牌发送。我目前支持两种令牌“类型”:
- 客户端:使用客户端凭据授予类型。这适用于非用户特定的请求,例如访问应用程序范围的资产、密钥等。
- 用户:使用密码凭据授权类型。要获取此令牌,客户端必须通过传递有效的用户名/密码组合来请求它。所有用户请求都使用此令牌。
这一切正常,但我现在遇到了一个问题,因为我允许用户也使用 Facebook 登录应用程序。
在用户登录 FB 后,我的客户端通过将 Facebook UID 传递给我的服务器(使用客户端令牌)进行响应。然后,我在我的服务器上进行一些检查,以将此 UID 与我数据库中的现有用户相匹配。
这是问题所在:我想使用用户令牌响应此请求。需要此令牌,因为用户现在将登录到应用程序,并且任何后续请求都将需要此令牌。但是,目前我觉得我这样做的唯一方法是:
回复用户名和密码。然后让客户端按照密码凭证流程请求用户令牌。我不喜欢这样,因为我要传递密码,而且它需要多次旅行。
我觉得我可能缺少一些基本的东西。我应该有另一种方式来处理这个流程吗?