はい、Akber が提案したことを行いました。2 つのサイトがxxx.com
ありxxx.co.uk
、両方のサイトの OAuth に 1 つの github アプリを使用したいと考えています。
Rails と OmniAuth gem を使用しました。
最初に行う必要があるのは、コールバック URL の最後にcom
orを追加することですco.uk
class OmniAuth::Strategies::GitHub
# Some code are omitted
def callback_url
url = super
matches = url.match(/xxx\.([a-z|\.]+)(:\d+)?\//)
if matches && matches[1] != 'com'
tld = matches[1]
url.gsub!("xxx.#{matches[1]}", 'xxx.com')
url << "/#{tld}"
end
url
end
end
これは、github OAuth がコールバックしたときにリダイレクトする Rails ミドルウェア コードです。
def call(env)
match = env["PATH_INFO"].match(/\A\/users\/auth\/github\/callback\/(.+)\Z/)
if match
host = env["HTTP_HOST"]
[301, {"Location" => "#{env['rack.url_scheme']}://#{host.gsub('com', match[1])}/users/auth/github/callback?#{env["QUERY_STRING"]}"}, self]
else
@app.call(env)
end
end