我最近分叉https://github.com/fortuity/rails3-mongoid-omniauth并尝试让登录工作为不同的提供商。它适用于Twitter和Facebook(您可以在http://jgodse-omniauth-mongoid.heroku.com/尝试),但我无法让它为Github工作。代码快照为here at 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身份验证工作?
答案 0 :(得分:10)
我不是fu%^& * g相信这一点。
我去了github.com,其中配置了应用程序密钥,密钥,url,回调,并从“回调URL”和“URL”中删除了尾部斜杠,并且它有效。
URL: http://jgodse-omniauth-mongoid.heroku.com
Callback URL: http://jgodse-omniauth-mongoid.heroku.com
这是疯了! Twitter希望回调的尾随斜线,但Github没有。 Github和twitter应该允许两者,然后在需要时自动修剪它。