2010-04-05 149 views
2

我正在搞亂WebFinger,並試圖創建一個小型的Rails應用程序,使用戶只能使用WebFinger帳戶登錄。我能成功地用手指自己,我回去跟下面的代碼片段的XRD文件:使用WebFinger和OpenID登錄

Link rel="http://specs.openid.net/auth/2.0/provider" href="http://www.google.com/profiles/{redacted}"/ 

其中,對我來說,讀,「我在URL一個OpenID 2.0登錄:http://www.google.com/profiles/{redacted}」。但是,當我嘗試使用URL登錄,我收到以下錯誤

OpenID::DiscoveryFailure (Failed to fetch identity URL http://www.google.com/profiles/{redacted} : Error encountered in redirect from http://www.google.com/profiles/{redacted}: Error fetching /profiles/{Redacted}: Connection refused - connect(2)):

當我更換「https://www.google.com/accounts/o8/id」的個人資料網址,登錄完美的作品。

這裏是我使用的代碼(我使用RedFinger作爲一個插件,並Janrain的紅寶石的OpenID,而創業板安裝)

require "openid" 
require 'openid/store/filesystem.rb' 

class SessionsController < ApplicationController 
    def new 
    @session = Session.new 
    #render a textbox requesting a webfinger address, and a submit button 
    end 

    def create 
####################### 
# 
# Pay Attention to this section right here 
# 
####################### 
    #use given webfinger address to retrieve openid login 
    finger = Redfinger.finger(params[:session][:webfinger_address]) 
    openid_url = finger.open_id.first.to_s 
    #openid_url is now: http://www.google.com/profiles/{redacted} 

    #Get needed info about the acquired OpenID login 
    file_store = OpenID::Store::Filesystem.new("./noncedir/") 
    consumer = OpenID::Consumer.new(session,file_store) 
    response = consumer.begin(openid_url) #ERROR HAPPENS HERE 

    #send user to OpenID login for verification 
    redirect_to response.redirect_url('http://localhost:3000/','http://localhost:3000/sessions/complete') 
    end 

    def complete 
    #interpret return parameters 
    file_store = OpenID::Store::Filesystem.new("./noncedir/") 
    consumer = OpenID::Consumer.new(session,file_store) 
    response = consumer.complete params 
    case response.status 
    when OpenID::SUCCESS 
     session[:openid] = response.identity_url 
     #redirect somehwere here 
    end 
    end 
end 

是否有可能對我來說,使用URL我從我的WebFinger收到使用OpenID登錄?

+0

當在www.google.com上獲取網址時,「連接被拒絕」?這是*非常*奇怪。 – keturn 2010-04-05 19:07:20

回答

2

是的,絕對。儘管我還沒有發佈源代碼,但您可以在webfinger.org上進行測試。實現基本如您所描述的那樣。不幸的是,我不確定爲什麼您的登錄示例無法正常工作。

+0

哈哈,這就是我一直在測試的東西:) 現在我只需要弄清楚爲什麼系統有問題提取地址我給它 – Ryan 2010-04-05 18:22:28

+0

嘿,當我登錄您的網站時,它看起來像我' m被重定向到https://www.google.com/accounts/o8/id 您是否知道您是在那裏重定向還是在谷歌重新定向? – Ryan 2010-04-05 22:20:44

+0

google.com/accounts/o8/id是/是Google OpenID帳戶的常用OpenID標識符。如果我沒有記錯,這是webfinger.org默認使用GMail帳戶的標識符。 – 2010-04-06 06:49:27