如何从 OmniAuth 提供商获取身份验证 URL(无需重定向)

问题描述 投票:0回答:2

当您转到

/auth/twitter
时,如何获取 OmniAuth 重定向到的 URL?

我正在构建一个 API 服务器,只想将 JSON 格式的 URL 传递给客户端,以便客户端可以使用该 URL 执行任何需要的操作。

我认为我想要的是策略

request_phase
的结果,因为它看起来是身份验证 URL,但我如何在新控制器中获取它,以便我可以做到:

class MyOauthController < ApplicationController
  # GET /my_oauth/signin/twitter.json
  def signin
    url = ???
    render json: {signin_url: url}
  end

有没有一种干净的方法来做到这一点?

ruby-on-rails ruby omniauth omniauth-twitter
2个回答
0
投票

是的,Omniauth 为您提供了一个辅助功能:

user_omniauth_authorize_path(key)
# for your case
user_omniauth_authorize_path("twitter")

查看 他们的 Devise 概述


0
投票

有没有一种干净的方法来做到这一点?

不直接,不 - vanilla OmniAuth 本身不会生成路由。它使用称为“Rack middleware”的东西,该中间件会拦截 Ruby on Rails 上下文之外的请求,因此不需要 Rails 路由即可运行。

上面 Evan 的答案依赖于 Devise gem,这对 OmniAuth 不是严格要求(您可能已捆绑并加载它,也可能没有)。

© www.soinside.com 2019 - 2024. All rights reserved.