手动触发omniauth回调

时间:2012-05-07 04:40:43

标签: ruby-on-rails ruby-on-rails-3 omniauth twitter-oauth

有没有办法可以手动触发omniauth回调?

我的意思是说,我在json中得到了来自twitter的oauth响应,然后我可以将这些数据POST / GET发送到omniauth回调网址吗?如果是这样,我应该重新构造json数据的具体格式吗?

我在这些行上做了一些事情,但无法在omniauth回调中填充request.env['omniauth.auth']

这是请求规范

before(:each) do
  # response returned from twitter is in spec/fixtures/oauth_twitter_response.json
  twitter_oauth_response = File.join(Rails.root.to_s, 'spec', 'fixtures', 'oauth_twitter_response.json')
  data = File.read(twitter_oauth_response)
  @twitter_data = JSON.parse(data)
end

it 'should post the twitter data to omniauth callback' do
  post 'users/auth/twitter/callback', {}, {:env => {"omniauth.auth" => @twitter_data}}
end

是否有可能这样做?

1 个答案:

答案 0 :(得分:1)

这是可能的。你唯一缺少的是你遇到的问题 - 设置omniauth.auth。你这样做:

controller.stub!(:env).and_return('omniauth.auth' => @twitter_data)