4

最近、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

「OAuth アプリケーション: Jay's Rails3 Mongoid OAuth」の github 情報は次のとおりです (私のアプリ プロファイル ページから):

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認証を機能させるために何が欠けていますか?

4

1 に答える 1

10

私はこれを信じていません。

アプリケーションシークレット、キー、URL、コールバックが構成されているgithub.comにアクセスし、「コールバックURL」と「URL」から末尾のスラッシュを削除しましたが、機能しました。

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

これはナッツです!Twitterはコールバックの末尾のスラッシュを望んでいますが、Githubは望んでいません。Githubとtwitterは両方を許可し、必要に応じて自動的にトリミングする必要があります。

于 2011-05-14T04:37:39.287 に答える