2011-05-13 80 views
4

我最近分叉了https://github.com/fortuity/rails3-mongoid-omniauth,并试图让登录工作为不同的提供商。它适用于Twitter和Facebook(你可以在http://jgodse-omniauth-mongoid.heroku.com/上试用),但我无法在Github上运行它。代码快照是here at githubRails:Omniauth:Github提供商并不完全工作

我的环境是这样的:

$ heroku info 
=== jgodse-omniauth-mongoid 
Web URL:  http://jgodse-omniauth-mongoid.heroku.com/ 
Git Repo:  [email protected]: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:   [email protected] 

[email protected] ~/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应用:周杰伦的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身份验证工作?

回答

10

我不fu%^ & * g相信这一点。

我去了github.com,在那里配置了应用程序secret,key,url,callback,并从“回调URL”和“URL”中删除了尾部斜杠,并且工作正常。

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

这是坚果! Twitter希望回调中的尾部斜线,但Github没有。如果需要,Github和Twitter应该允许并自动修剪它。

+1

你刚刚救了我的傍晚和我的理智,先生!谢谢!! :) – Abel 2011-09-19 02:39:50

+0

确实http://hueniverse.com/2012/07/26/oauth-2-0-and-the-road-to-hell/,“所有在邮件列表上,在会议上艰难的妥协妥协特殊设计委员会和后向通道导致了一个规范,该规范未能实现其两个主要目标 - 安全性和互操作性。实际上,其中一个折衷方案是将其从协议重命名为框架,另一个是增加一个免责声明警告说规范不同于生成可互操作的实现。“ – bbozo 2015-10-29 17:48:52