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

Ale*_* D. 8 ruby-on-rails oauth omniauth ruby-on-rails-3.1

我已经安装了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
Run Code Online (Sandbox Code Playgroud)

此外,我将'omniauth''omniauth-facebook''omniauth-twitter'宝石添加到gemfile中

有两个问题:

  1. 当我去http:// localhost:3000/auth/facebook时, 我得到{"error":{"message":"缺少client_id参数.","type":"OAuthException"}}

链接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&display=popup 并且没有client_id! !

  1. 当我去http:// localhost:3000/auth/twitter时,我得到OAuth :: Unauthorized

401未经授权

有任何想法吗?

Jef*_*eil 15

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

provider :twitter, TWITTER_KEY, TWITTER_SECRET
Run Code Online (Sandbox Code Playgroud)

在omniauth.rb

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

配置/环境/ development.rb:

TWITTER_KEY = 'aaaaaaa'
TWITTER_SECRET = 'aaaabbbbbb'
Run Code Online (Sandbox Code Playgroud)

配置/环境/ production.rb:

TWITTER_KEY = 'ccccccc'
TWITTER_SECRET = 'ccccdddddd'
Run Code Online (Sandbox Code Playgroud)