嘿伙计们我正在尝试使用Dailybooth api,并通过oauth访问用户..我是ruby / rails的新手,这是我第一次使用api和oauth。这是事情
if params[:code] #if the code is avaible, use the code
dailybooth.oauth_token(params[:code])
@oauth_token_ = params[:code]
session[:oauth_code] = @oauth_token_
else #else, attempt to use the session
if session[:oauth_code] #If session is set
dailybooth.oauth_token(session[:oauth_code]) #sign in using session
else #else, check if the params[:code] is set and use, or redirect to dailybooth authorize
if params[:code]
dailybooth.oauth_token(params[:code])
@oauth_token_ = params[:code]
session[:oauth_code] = @oauth_token_
else
#first redirect the user to the authorize_url
redirect_to dailybooth.authorize_url
end
end
end
#make request to the api
@info = dailybooth.get('/users.json')
if @info['error']
if @info['error']['error_code']
if @info['error']['error_code'] == 302 #if getting invalid token, request another token.
session[:oauth_code] = nil
@info = "Getting Errorcode 302, invalid token."
#first redirect the user to the authorize_url
# redirect_to dailybooth.authorize_url
end
end
end
所以,这是我的应用程序的索引。当我第一次进入索引时,我立即转发到dailybooth来授权我的帐户,在授权后,dailybooth将我返回到我的网站,其网址看起来像“http://site.com/?code=XXX”并且“dailybooth.get('/ users.json')”开始工作,它实际上是用户信息。但如果我尝试刷新,转到相同的“http://site.com/?code=XXX”,它会说令牌无效。这是为什么?令牌只是有效的,现在它不起作用。有什么建议?这是我的错误吗?
答案 0 :(得分:1)
我的猜测是问题是你存储的是每日的OAuth令牌,而不是存储访问令牌。您对dailybooth.oauth_token(...)的调用可能会生成一个访问令牌,您应该存储它,而不是params [:code](OAuth令牌)。通常OAuth的工作方式如下:
检查dailybooth对象,你可能会以某种方式访问实际的访问令牌(dailybooth.token或dailybooth.access_token可能?)。确保将该访问令牌存储在会话或数据库中,然后在返回页面时使用该访问令牌,而不是此时变为无效的参数[:code]。
答案 1 :(得分:0)
我无法帮助您使用Ruby,因为我从未使用它,但是我可以在上面的注释中添加OAuth 2中的流程(这绝对是首选的选择):
以下是对Verifier重要性并添加到协议中的原因的一个很好的解释:
http://hueniverse.com/2009/04/explaining-the-oauth-session-fixation-attack/