omn​​iauth OAuthException&的OAuth ::未经授权

时间:2011-11-25 00:08:55

标签: 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['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'      'omniauth Facebook的'     'omniauth-twitter'宝石到宝石文件

有两个问题:

  1. 当我去http://localhost:3000/auth/facebook时,我明白了 { “错误”:{   “message”:“缺少client_id参数。”,   “type”:“OAuthException” } }
  2. 链接graph.facebook.com/oauth/authorize?response_type=code&client_id=&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Ffacebook%2Fcallback&parse=query&scope=email% 2Coffline_access%2Cread_stream&安培;显示弹出= 并且没有client_id !!!

    1. 当我转到http://localhost:3000/auth/twitter时,我会收到OAuth :: Unauthorized
    2. 401未经授权

      有什么想法吗?

3 个答案:

答案 0 :(得分:15)

Alex D.是正确的,因为ENV []打破了它。要创建omniauth.rb以便它在不同的环境中使用不同的密钥,只需输入:

provider :twitter, TWITTER_KEY, TWITTER_SECRET
在omniauth.rb

然后在你的环境配置文件(config / environments / development.rb等)中放入你想要用于该环境的密钥。

配置/环境/ development.rb:

TWITTER_KEY = 'aaaaaaa'
TWITTER_SECRET = 'aaaabbbbbb'

配置/环境/ production.rb:

TWITTER_KEY = 'ccccccc'
TWITTER_SECRET = 'ccccdddddd'

答案 1 :(得分:2)

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='....'

答案 2 :(得分:0)

在omniauth 1.0中进行了重大更改 - https://github.com/intridea/omniauth

  

OmniAuth 1.0与版本0.x有几处重大更改。您可以   将依赖项设置为〜&gt; 0.3.2如果你不想做更多   难以升级。有关详细信息,请参阅wiki

我会尝试将omniauth恢复为0.3.2:

gem install omniauth --version '~> 0.3.2'

或者如果你在Gemfile中使用bundler:

gem omniauth, '~> 0.3.2'