Ruby on rails omniauth OAutheException&;OAuth::未经授权
我已经安装了omniauth 1.0。还有oauth-0.4.5、oauth2-0.5.1、omniauth-facebook-1.0.0、omniauth-twitter-0.0.6Ruby on rails omniauth OAutheException&;OAuth::未经授权,ruby-on-rails,oauth,ruby-on-rails-3.1,omniauth,Ruby On Rails,Oauth,Ruby On Rails 3.1,Omniauth,我已经安装了omniauth 1.0。还有oauth-0.4.5、oauth2-0.5.1、omniauth-facebook-1.0.0、omniauth-twitter-0.0.6 omniauth.rb Rails.application.config.middleware.use OmniAuth::Builder do provider :developer unless Rails.env.production? provider :facebook, ENV['167257
omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :developer unless Rails.env.production?
provider :facebook, ENV['167257285348131'], ENV['c8c722f697scb2afcf1600286c6212a9'], :scope => 'email,offline_access,read_stream', :display => 'popup'
provider :twitter, ENV['fma2L22ObJCW52QrL7uew'], ENV['4aZfhCAOdiS7ap8pHJ7I1OZslFwVWWLiAMVpYUI']
end
session_controller.rb
class SessionsController < ApplicationController
require 'omniauth-facebook'
require 'omniauth-twitter'
require 'omniauth'
def create
@user = User.find_or_create_from_auth_hash(auth_hash)
self.current_user = @user
redirect_to '/'
end
def auth_hash
request.env['omniauth.auth']
end
end
omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
提供者:开发者,除非Rails.env.production?
提供者:facebook,环境['167257285348131',环境['c8c722f697scb2afcf1600286c6212a9',:范围=>'电子邮件,脱机访问,读取流',:显示=>'弹出窗口'
提供者:twitter、ENV['fma2L22ObJCW52QrL7uew',ENV['4AZFHCAODIS7AP8PHJ7I1OZSLFWVWWLIAMPYUI']
结束
会话_controller.rb
类sessioncontroller
我还要补充一点
“omniauth”
“omniauth facebook”
“omniauth twitter”gems到gemfile
有两个问题:
有什么想法吗?在omniauth 1.0中进行了突破性的更改- OmniAuth 1.0与版本0.x相比有一些突破性的更改。你可以 如果您不想使依赖关系更复杂,请将依赖关系设置为~>0.3.2 升级困难。有关更多信息,请参阅 我将尝试将omniauth恢复到0.3.2:
gem install omniauth --version '~> 0.3.2'
或者,如果您正在使用bundler,请在您的文件中:
gem omniauth, '~> 0.3.2'
Alex D.是正确的,因为ENV[]会破坏它。要创建omniauth.rb以便在不同的环境中使用不同的密钥,只需放置:
provider :twitter, TWITTER_KEY, TWITTER_SECRET
在omniauth.rb中
然后在您的环境配置文件(config/environments/development.rb等)中放入您想要用于该环境的密钥
config/environments/development.rb:
TWITTER_KEY = 'aaaaaaa'
TWITTER_SECRET = 'aaaabbbbbb'
config/environments/production.rb:
TWITTER_KEY = 'ccccccc'
TWITTER_SECRET = 'ccccdddddd'
ENV['something']
查看您的环境变量以查找“某物”,因此
something='12345'
所以你应该这样做
export AUTH_FB_KEY='....'
export AUTH_FB_SECRET='...'
核对
env
并更新您的配置
provider :facebook, ENV['AUTH_FB_KEY'], ENV['AUTH_FB_SECRET']
如果你用heroku
heroku config:add AUTH_FB_KEY='....'
我恢复到0.3.2。很惊讶我也有同样的问题。啊,很抱歉听到这个。不久前我遇到了一个类似的问题,恢复到0.3.2为我解决了这个问题。我会查看其他相关gem的历史日志,确保一切看起来都很好?谢谢,但我在omniauth.rb中找到了原因。如果没有ENV[],它可以工作。你解决了facebook错误了吗?如果是的话,我能找到工作吗?我收到了同样的错误信息。如果我手动将客户机id添加到查询字符串中,则可以解决此问题parameters@VinaENV[]破坏了它。请尝试仅使用“”。例如:提供商:facebook,'167257285348131','c8c722f697scb2afcf1600286c6212a9',谢谢,这很有效!似乎我还需要重新启动webrickDI也有同样的问题!你知道为什么ENV[]会破坏这个吗?在我的例子中,它在facebook上运行良好,但在twitter上不起作用。在启动服务器之前,请尝试
source~/.profile
(或定义了环境变量的任何地方)。你只需要这样做一次。我认为你应该将这些文件添加到你的gitignore文件中,否则任何人都可以在你的repo中查看很多密钥?@Jeff Steil:这是存储密钥和API_SECRET的更好方法还是环境变量方法?我知道这是一个有争议的话题,但由于我目前是唯一的开发者,哪种方式更好?