2011-01-24 71 views
2

ķ傢伙,所以我是用dialybooth API workign和OAauth,所以首先,我不得不直線上升不能存儲在會話的OAuth令牌(導軌)

#first redirect the user to the authorize_url 
    redirect_to dailybooth.authorize_url 

#on user return grab the code from the query string 
dailybooth.oauth_token(params[:code]) 

#make request to the api 
pp dailybooth.get('/users.json') 

問題是,它會不斷的重定向,因爲它甚至沒有檢查oauth_token是否被設置,所以我做了這個;現在

unless dailybooth.oauth_token(params[:code]) 
#first redirect the user to the authorize_url 
redirect_to dailybooth.authorize_url 

#on user return grab the code from the query string 
dailybooth.oauth_token(params[:code]) 
end 


#make request to the api 
pp dailybooth.get('/users.json') 

,這個送我去dailybooth授權頁,授權用戶,然後發送到我的網頁,我獲得了他們的帳戶(與返回的用戶信息的數組)訪問,事情是,如果您刷新的令牌不再存在,並且用戶必須重新授權。

於是,我就什麼是對的oauth_token存儲在會話,

if session[:oauth_code] #If session is set 
    dailybooth.oauth_token(session[:oauth_code]) #sign in using cookie 
else 
    if 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 



#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 
     #first redirect the user to the authorize_url 
     redirect_to dailybooth.authorize_url 

    end 
    end 
end 

我仍然得到同樣的事情,當我第一次去我的網站,我重定向到授權頁面,當局,然後我可以訪問該帳戶,但是當我嘗試返回索引時,它說oauth_token是無效的。任何幫助?

回答

0

我會說實話,我不是100%確定的(並且DailyBooth的API文檔是......缺乏,至少可以這麼說),但我相信你使用「token」(你是從params[:code]獲得並存儲在@oauth_token_中)以獲得訪問令牌,然後存儲訪問令牌(例如,如果是對象/數組,則將結果存儲爲dailybooth.oauth_token(session[:oauth_code])或至少其一部分)。

unless session[:oauth_code] #unless the session is set 
    if params[:code] 
    session[:oauth_code] = dailybooth.oauth_token(params[:code]) 
    else 
    #first redirect the user to the authorize_url 
    redirect_to dailybooth.authorize_url 
    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 
     #first redirect the user to the authorize_url 
     redirect_to dailybooth.authorize_url 

    end 
    end 
end 

我希望這點能指向正確的方向。