Rails: Omniauth: провайдер Github не совсем работает - PullRequest
4 голосов
/ 14 мая 2011

Я недавно разбудил https://github.com/fortuity/rails3-mongoid-omniauth и попытался заставить логин работать для разных провайдеров.Он работает для Twitter и Facebook (вы можете попробовать его на http://jgodse -omniauth-mongoid.heroku.com / ), но я не смог заставить его работать на Github.Снимок кода здесь, на github .

Моя среда выглядит следующим образом:

$ heroku info
=== jgodse-omniauth-mongoid
Web URL:        http://jgodse-omniauth-mongoid.heroku.com/
Git Repo:       git@heroku.com:jgodse-omniauth-mongoid.git
Dynos:          1
Workers:        0
Repo size:      7M
Slug size:      5M
Stack:          bamboo-mri-1.9.2
Data size:      (empty)
Addons:         Basic Logging, MongoHQ MongoHQ Free, Shared Database 5MB
Owner:          xxxxx@yyy.com

Jay@JAY-PC ~/rapps/rails3-mongoid-omniauth (master)
$ heroku config --long
BUNDLE_WITHOUT      => development:test
DATABASE_URL        => postgres://xxxxxxxxxxxxxxxxxxxx.compute-1.amazonaws.com/rrretnhwhj
FACEBOOK_APP_ID     => xxxxxxxxxxxxxxxxxxxx
FACEBOOK_APP_SECRET => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GITHUB_CLIENT_ID    => xxxxxxxxxxxxxxxxxxxxx
GITHUB_SECRET       => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LANG                => en_US.UTF-8
MONGOHQ_URL         => mongodb://heroku:9xxxxxxxxxxxxxxxx.mongohq.com:27098/app527030
RACK_ENV            => production
SHARED_DATABASE_URL => postgres://xxxxxxxxxxxxxxxxxxxxx.compute-1.amazonaws.com/rrretnhwhj
TWITTER_KEY         => xxxxxxxxxxxxxxxxxxx
TWITTER_SECRET      => xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Моя информация на github для "OAuth-приложения: Jay's Rails3 Mongoid OAuth" выглядит следующим образом (со страницы профиля моего приложения):

Authorization Token:   https://github.com/login/oauth/authorize
Access Token URL:      https://github.com/login/oauth/access_token
URL:     http://jgodse-omniauth-mongoid.heroku.com/
Callback URL:   http://jgodse-omniauth-mongoid.heroku.com/
Client ID: xxxxxxx
Secret:    xxxxxxxxxxxxxxxx

Клиент и секретный ключ задаются как переменные среды в omniauth.rb

Идентификация происходит, но она перенаправляет на http://jgodse -omniauth-mongoid.heroku.com /? error = redirect_uri_mismatch , и я, по-видимому, не выполнил вход. Если я изменю URL-адрес обратного вызова на http://jgodse -omniauth-mongoid.heroku.com / callback , приложение вылетает.

Чего мне не хватает, чтобы заставить работать github-аутентификацию?

1 Ответ

10 голосов
/ 14 мая 2011

Я не фу% ^ & * g верю этому.

Я пошел на github.com, где секретный ключ приложения, ключ, URL-адрес, обратный вызов настроен, и удалил косую черту из «URL-адреса обратного вызова» и «URL-адреса», и это сработало.

URL: http://jgodse-omniauth-mongoid.heroku.com
Callback URL:  http://jgodse-omniauth-mongoid.heroku.com

Это орехи!Твиттер хочет косую черту в обратном вызове, а Github - нет.Github и twitter должны разрешить и то, и другое, а затем автоматически обрезать его, если это необходимо

...