我使用this Omniauth Middleware来验证来自iOS应用的Facebook访问令牌。
此策略安装如下:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook_access_token, Settings.facebook.key, Settings.facebook.secret
end
这通过这个网址非常有效:
/users/auth/facebook_access_token/callback?access_token=<snipped>
但是,如果我在路径末尾添加.json
,我的路由仍会触发,但无法触发中间件。
/users/auth/facebook_access_token/callback.json?access_token=<snipped>
我知道它无法触发,因为我可以在触发时看到与策略相关的日志活动,当它失败时我得不到。它也不会使用我需要的数据填充request.env["omniauth.auth"]
。
我选择这两条路径的路线是:
match 'users/auth/facebook_access_token/callback' => 'omniauth_callbacks#facebook', via: :all
那么当我使用.json
请求格式时,如何才能触发中间件,以便检测到并呈现JSON响应?
相关但主要未解决:How do I make OmniAuth Identity accept JSON post data?