omniauth OAuthException & OAuth :: Несанкционированный - PullRequest
8 голосов
/ 25 ноября 2011

Я установил 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' превращается в 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 !!!

Когда я перехожу на http://localhost:3000/auth/twitter, я получаю OAuth :: Unauthorized

401 Unauthorized

Есть идеи?

Ответы [ 3 ]

15 голосов
/ 29 ноября 2011

Алекс Д. прав в том, что ENV [] нарушает его.Чтобы создать omniauth.rb, чтобы он использовал разные ключи в разных средах, просто введите:

provider :twitter, TWITTER_KEY, TWITTER_SECRET

в omniauth.rb

, а затем в конфигурационные файлы вашей среды (config / environment / development.rb и т. д.) введите ключ, который вы хотите использовать для этой среды.

config / environment / development.rb:

TWITTER_KEY = 'aaaaaaa'
TWITTER_SECRET = 'aaaabbbbbb'

config / environment / production.rb:

TWITTER_KEY = 'ccccccc'
TWITTER_SECRET = 'ccccdddddd'
2 голосов
/ 15 ноября 2012

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 голосов
/ 25 ноября 2011

В omniauth 1.0 были внесены критические изменения - https://github.com/intridea/omniauth

OmniAuth 1.0 имеет несколько критических изменений по сравнению с версией 0.x.Вы можете установить зависимость ~> 0.3.2, если вы не хотите делать более сложное обновление.См. wiki для получения дополнительной информации.

Я бы попробовал вернуть omniauth до 0.3.2:

gem install omniauth --version '~> 0.3.2'

или, если вы используете упаковщик, вваш Gemfile:

gem omniauth, '~> 0.3.2'
...