1
私は、以下のruby openIdの例をUbuntu画像のsinatraで実行しています。ruby sinatra openid appは "Nonceが既に使用されているか、範囲外です"と返信します
:GoogleのURL(https://www.google.com/accounts/o8/id) に入るとき、私は、Googleマイ資格情報を入力しますが、代わりに私が手にアクセス権が付与されているためにredirctedい%w(rubygems sinatra openid openid/store/filesystem).each { |lib| require lib}
REALM = 'http://localhost:4567'
RETURN_TO = "#{REALM}/complete"
get '/loginform' do
erb :loginform
end
post '/login' do
checkid_request = openid_consumer.begin(params[:openid_identifier])
redirect checkid_request.redirect_url(REALM, RETURN_TO) if checkid_request.send_redirect?(REALM, RETURN_TO)
checkid_request.html_markup(REALM, RETURN_TO)
end
get '/complete' do
response = openid_consumer.complete(params, RETURN_TO)
return 'You are logged in!' if response.status == OpenID::Consumer::SUCCESS
msg=response.message
<<-eos
Could not log on with your OpenID due to #{msg}
eos
end
def openid_consumer
@consumer = OpenID::Consumer.new(session, OpenID::Store::Filesystem.new("#{File.dirname(__FILE__)}/.tmp/openid")) if @consumer.nil?
return @consumer
end
enable :inline_templates
__END__
@@ layout
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>got openid?</title>
</head>
<body>
<%= yield %>
</body>
</html>
@@ loginform
<form method="post" accept-charset="UTF-8" action='/login'>
Identifier:
<input type="text" class="openid" name="openid_identifier" />
<input type="submit" value="Verify" />
</form>
すでにまたは範囲外の使用ナンス: "2012-05-09T13:50:xxxxxxxxxxxxxxx"
(ところで、私は "ルビー" ではない "ショットガン" を使用してRubyのプログラムを実行しています)。 誰かが出力の意味だけでなく救済についていくつかの洞察を私に提供することができますか? ありがとう!