在Rails JSON API中使用Devise for Omniauth一次性代码流

mrs*_*tif 6 ruby-on-rails devise omniauth google-oauth json-api

我目前正在为Rails实现一个JSON API,以便为Android移动应用提供服务,这需要进行Google身份验证.

我希望的流程是Google API OAuth2的一次性代码流(混合身份验证),如omn​​iauth-google-oauth gem中所述.简而言之,Android应用从Google帐户的服务器获取一次性代码并将其交给Rails API操作,该操作将其转换为访问令牌,然后使用它来获取用户的个人资料信息.

考虑到这一点,我有两个关于Rails中的Devise omniauth实现的问题:

  1. 我发现在omn​​iauth-google-oauth gem的文档中已经描述了Javascript的一次性代码客户端流程实现.但是,Devise通过将用户重定向到新的注册页面来处理授权失败,并且回调阶段需要一组我没有文档的参数.Devise是否支持JSON API的此类流程?如果是这样,应该如何处理?

  2. 我注意到有一种触发器可以启动omniauth的回调阶段,如下所示.问题是,当我将omniauth的path_prefix更改为/ users/auth /的其他内容时,当我对回调URL发出POST请求时,不会触发此操作.Devise/Omniauth使用什么标准来触发此触发器?

    INFO - omniauth :( google_oauth2)已启动回调阶段.

作为参考,我使用Rails 4.1.6与Ruby 2.1.3和Devise 3.2.4.

我非常感谢你的帮助!