2010-07-19 45 views
2

我對Twitter的API有一個非常奇怪和令人沮喪的問題。 oauth進程在本地工作得很好,但是一旦我將該網站放在heroku上,它會自動添加測試服務器的url並重定向到一個破損的頁面。這是代碼:如何在軌中chomp重定向url?我在使用Twitter的OAuth時遇到問題

def oauth 
    oauth = Twitter::OAuth.new('*','*') 
    request_token = oauth.request_token(:oauth_callback => 'http://strong-ice-53.heroku.com/callback') 
    session[:request_token] = request_token.token 
    session[:request_token_secret] = request_token.secret 
    session[:returnurl] = params[:returnurl] 
    redirect_to request_token.authorize_url 
    end 

本地http://strong-ice-53.heroku.com/oauth把我送到api.twitter.com/......就好了。但一旦在線,它會發送給我http://strong-ice-53.heroku.comapi.twitter.com/ ...這給了我一個錯誤。

我試圖咬食重定向,但似乎並沒有工作:

redirect_to request_token.authorize_url.chomp("strong-ice-53.heroku.com") 

任何幫助將不勝感激。我是所有這些的小白人。

回答

0

您使用的是哪個版本的twitter oauth?這看起來像oauth中的一個bug。

你也可以檢查變量request_token.authorize_url的內容嗎?這樣的事情應該做的伎倆:

def oauth 
    oauth = Twitter::OAuth.new('*','*') 
    request_token = oauth.request_token(:oauth_callback => 'http://strong-ice-53.heroku.com/callback') 
    session[:request_token] = request_token.token 
    session[:request_token_secret] = request_token.secret 
    session[:returnurl] = params[:returnurl] 
    logger.info("\n\n\n\n#{request_token.authorize_url.inspect}\n\n\n\n") 
    redirect_to request_token.authorize_url 
end 

,然後看服務器的輸出