我是Rails的新手,我现在已经坚持这个问题了。我们在Rails应用程序中使用Omniauth Gem进行身份验证。我有一个会话控制器,它指定redirect_url。身份验证成功发生,但网址不是我们所期望的。
回复网址:
https://mycompany****/oauth/authorize?client_id=259fb843dc20d1b7&redirect_uri=https%3A%2F%2Frailswebserver%2Fauth%2Fprovider%2Fcallback&response_type=code&state=fe144f693105a30223cab09c68eb95ecdf58a0e248a679e8
redirect_uri仍指向/ auth / provider / callback,而我们希望它附加会话控制器中提到的内容。我不知道如何在这个响应url中选择client_id,因为我在yml文件中提到的那个是不同的。
sessions_controller.rb
class SessionsController < ApplicationController
def new
redirect_to "/auth/#{OAUTH_SETTINGS["auth_provider"]}"
end
def create
omniauth_data = env["omniauth.auth"]
username = omniauth_data['info']['username'] session[:user_id] = username
redirect_path = root_path + "/docs/index.html" redirect_path = cookies[:return_url]
if !cookies[:return_url].blank?
cookies[:return_url] = nil
redirect_to redirect_path
oauth.yml
development:
auth_provider: 'provider'
oauth_root_url: 'mycompany******.com'
oauth_client_id: '259***************************8a76b3629b843dc20d1b7' oauth_secret: 'e9c697***************************b9c3bfa82f5f893ca1' docs_root_url: 'railswebserver';