2013-10-30 73 views
0

基本上是我的最後一次嘗試是即時得到這個錯誤:對巨人+ OmniAuth任何例子

[:error, "bad URI(is not URI?): ://localhost:80/auth/twitter/auth/twitter"] 

當我瀏覽到

http://127.0.0.1/auth/twitter 

這是我的歌利亞的服務器

class Application < Goliath::API 
    use(Rack::Session::Cookie 
    use OmniAuth::Strategies::Developer 
    use OmniAuth::Builder do 
     provider :twitter, '..', '..' 
     provider :facebook, '..', '..' 
     provider :developer 
    end 
end 

有趣/ auth/developer沒有任何問題 - 但Twitter或Facebook有。

任何想法?

回答

1

這是env變量的一個小錯誤,它缺少Rack::Request類的一些信息構造正確的路徑。

修復的方法是非常簡單的:

require 'omniauth' 
require 'omniauth-twitter' 
... 
require 'goliath' 

class Test < Goliath::API 
    use Rack::Session::Cookie 

    use Rack::Config do |env| 
    env['rack.url_scheme'] ||= 'http' 
    env['SCRIPT_NAME'] = nil 
    end 

    use OmniAuth::Strategies::Developer 

    use OmniAuth::Builder do 
     provider :twitter, '..', '..' 
     provider :facebook, '..', '..' 
     provider :developer 
    end 

    def response env 
    [200, {}, ''] 
    end 
end 

只需包括Rack::Config中間件與適當的參數,如上面的例子。

+0

工作!非常感謝 - 現在回到歌利亞。 – David