Facebook認証時、モバイル用ページを表示する
Oauth認証する際、APIに送るリクエストの末尾にdisplay="touch"をつけるとモバイル用のページが表示される。
通常のWEBページだったらdisplay=pageをつける(displayを付けないとこのページが採用されるようだ)
こんなかんじで
エラーメッセージによれば、他にpopup, wapがあるようだ
Parameters: {"error"=>"invalid_request", "error_description"=>"Unsupported display: 'touch1'. Supported displays: popup, page, wap, touch"
facebook_oauthを使ってる場合、displayパラメタを付与できる作りになってないので、モンキーパッチを当てました。
facebook_oauth/lib/facebook_oauth/client.rb
15 15 client.auth_code.authorize_url(
16 16 :client_id => @application_id,
17 17 :redirect_uri => options[:callback] || @callback,
18 - :scope => options[:scope]
18 + :scope => options[:scope],
19 + :display => options[:display] || "page"
19 20 )
20 21 end
呼び出し側も修正
redirect_to client.authorize_url(:scope => 'emailとか', :display => "touch")
たぶんmoduleをオーバーライドするのが正解なんだけど、誰か方法教えてください><