【发布时间】:2012-01-06 00:19:10
【问题描述】:
我已经安装了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-facebook' 'omniauth-twitter' gem 到 gemfile
有两个问题:
- 当我去http://localhost:3000/auth/facebook 我得到 { “错误”: { "message": "缺少 client_id 参数。", “类型”:“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 未经授权
有什么想法吗?
【问题讨论】:
-
你解决了facebook错误吗?如果是,我可以解决这个问题吗?我收到相同的错误消息。手动添加client_id查询字符串参数即可解决
-
@Vina ENV[] 打破了它。尝试仅使用“”。例如:提供者:facebook、'167257285348131'、'c8c722f697scb2afcf1600286c6212a9'
-
谢谢,它工作!看来我还需要重新启动webrick。 :D
-
我遇到了同样的问题!你知道为什么 ENV[] 会破坏这个吗?就我而言,它适用于 facebook,但不适用于 twitter。
-
在启动服务器之前尝试
source ~/.profile(或任何你定义了环境变量的地方)。你只需要这样做一次。
标签: ruby-on-rails oauth ruby-on-rails-3.1 omniauth