0

Rails 4で作業していて、githubを使用して認証しようとしています。だから私のGithubアプリケーションにはこれがあります:

URL:http:// localhost:4000

コールバックURL:http:// localhost:4000 / auth / github / callback

コールバックURLは、認証が正しく行われたときにGithubが到達しようとするURLです。

それでは、リンクをクリックしたときにGithubページ404エラーが発生するのはなぜですか。

<%= link_to 'Sign in with Github', '/auth/github' %>

私はローカルホスト開発環境に取り組んでいるので、それが問題になる可能性がありますか?

またhttp:// localhost:4000/auth/github/callback、ブラウザで入力すると、OmniAuth :: Strategies :: OAuth2::CallbackErrorが発生します

なぜ?私はroutes.rbにこれを持っています

post 'auth/:provider/callback' => 'home#index'

Rails 4とOmniauthにバグがありますか?(ローカルホストにスペースを追加して、stackoverflowが私の投稿を受け入れるようにしました)

4

2 に答える 2

0

私にとっては、にリダイレクトしようとしたときに 404 を生成していたのは、Github の新しいより厳密な URI マッチングhttp://localhost:3000/auth/github/callbackでした。リダイレクト URI をパラメーターとして Omniauth に渡すことで解決しました。

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], 
        :scope => 'user,public_repo', 
        :redirect_uri => ENV['GITHUB_REDIRECT']
end

Linux/Mac の場合は、コマンド ラインから環境変数を追加できます。

$ export GITHUB_REDIRECT=http://localhost:3000/auth/github/callback

または、変数を保存するために使用できる .env ファイルを追加できるForemanのようなものを使用することもできます。

本番環境の変数に適切なリダイレクト URI を追加することを忘れないでください。

于 2013-11-02T11:25:28.150 に答える
0

omniauth-github 宝石とファイルconfig/initializers/omniauth.rbを含むgithubを使用しています

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET']
end

ただし、http://localhost:3000/auth/github/callbackブラウザで入力すると、OmniAuth::Strategies::OAuth2::CallbackErrorこれも問題になることはありません。

config/environment.rbのように見えます

# Load the rails application
require File.expand_path('../application', __FILE__)

# Load the app's custom environment variables here, so that they are loaded before environments/*.rb
app_environment_variables = File.join(Rails.root, 'config', 'app_environment_variables.rb')
load(app_environment_variables) if File.exists?(app_environment_variables)

...

そして私のようにconfig/app/environment_variables.rb見えます

# OAuth Keys and Secrets
if Rails.env.production?
  ENV['GITHUB_KEY'] = 'd1234a3a123a1a3a123c'
  ENV['GITHUB_SECRET'] = '1234azer123azer1231209jeunsghezkndaz1234'
else
  ENV['GITHUB_KEY'] = 'qsflkjkj685bg554456b'
  ENV['GITHUB_SECRET'] = 'qslkfj7757kqfmlsdh675hlfsd587kjfdh687jsd'
end

コードで Rails 開発環境の ENV 変数を設定することは可能ですか? を参照してください。その詳細については。github に 2 つのアプリケーションを登録しています。1 つapp_name-devは key qsflk...、 url http://localhost:3000、および callback urlhttp://localhost:3000/auth/github/callbackを持ち、もう 1 つapp_nameは key を持ちますd1234a...

それを正しく行ったことを確認してください。に変えてみてはいかがでしょlocalhost127.0.0.1

于 2013-02-13T09:22:16.277 に答える