首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >强制Omniauth使用json进行回调?

强制Omniauth使用json进行回调?
EN

Stack Overflow用户
提问于 2013-07-12 09:13:29
回答 3查看 1.6K关注 0票数 4

我正在尝试将Omniauth集成到用rails编写的API中,以供Android应用程序使用。这意味着我希望能够使用JSON处理omniauth回调。

默认情况下,Omniauth将其回调发送到/auth/:provider/callback,有没有办法强制Omniauth将其回调发送到/auth/:provider/callback.json

EN

回答 3

Stack Overflow用户

发布于 2013-07-12 11:19:55

您可以在操作中指定处理回调的格式:

代码语言:javascript
运行
复制
# in route.rb
match '/auth/:provider/callback' => 'authentications#create'

# in authentications_controller.rb
class AuthenticationsController < ApplicationController
  def create
    # your code here
    respond_to do |format|
      format.json { ... } # content to return
    end
  end
end
票数 2
EN

Stack Overflow用户

发布于 2014-01-06 19:02:10

我通过检查rails后端的request对象成功做到了这一点。

当我在我的应用程序上发出请求时,我会在定义格式的提交上添加数据:

代码语言:javascript
运行
复制
format: "json"

然后,omniauth回调

代码语言:javascript
运行
复制
/auth/:provider/callback

在我的情况下是匹配的

代码语言:javascript
运行
复制
sessions#create

作为HTML请求。但是,一旦您在rails中查看request对象,并搜索omniauth.params散列,您将看到其中一个值是在初始请求数据上传递的格式:

代码语言:javascript
运行
复制
"omniauth.params"=>{"format"=>"json", "provider"=>"facebook", "code"=>"..."} 

这是你搜索这个“格式”=>“json”,并做一个渲染json作为一个解释。

我希望它能解决你的问题。

票数 2
EN

Stack Overflow用户

发布于 2015-04-04 05:21:16

代码语言:javascript
运行
复制
# app/controllers/users_controller.rb
def authenticate
  @credentials = request.env['omniauth.auth']
  render json: @credentials
end

# config/routes.rb
get '/auth/:provider/callback', to: 'users#authenticate', as: 'user_auth'

然后,默认情况下,所有对/auth/:provider/callback的请求都将返回一个JSON响应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17606069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档