[Rails] redirect_to でリダイレクトできない原因はURLに半角スペースが入っていたせい

Mon, September 19, 2011 - 3 min read

 

Railsのメソッド redirect_to で、Facebook認証後のリダイレクト処理をさせていたのですが、ちゃんと動かなくて困っていました。  

リダイレクトできなかった原因はなんと、URLに半角スペースが入っていたせいでした…  

redirect_to @facebook_cookies.url_for_oauth_code(:permissions => "publish_stream, read_stream")
#redirect_to 'https://graph.facebook.com/oauth/authorize?client_id=125635350871368&redirect_uri=http://localhost:3000/&scope=publish_stream, read_stream'

 

“publish_stream, read_stream” の部分の半角スペースが入っていたせいでリダイレクトできていなかったみたいです。  

文字列で渡すところをうっかり配列で渡すような書き方にしてしまっていました…  

正しくは以下のように、スペースを入れないで scope に渡すパーミッションを指定します。  

redirect_to @facebook_cookies.url_for_oauth_code(:permissions => "publish_stream,read_stream")
#redirect_to 'https://graph.facebook.com/oauth/authorize?client_id=125635350871368&redirect_uri=http://localhost:3000/&scope=publish_stream,read_stream'

 

ちなみに、Facebook API を使うためのライブラリは koalaを使っています。  

arsduo/koala - GitHub はてなブックマーク - arsduo/koala - GitHub  

以上です。