スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Facebook認証時、モバイル用ページを表示する

Oauth認証する際、APIに送るリクエストの末尾にdisplay="touch"をつけるとモバイル用のページが表示される。
通常のWEBページだったらdisplay=pageをつける(displayを付けないとこのページが採用されるようだ)

こんなかんじで

https://graph.facebook.com/oauth/authorize?response_type=code&client_id=xxxxxxxxxxxxxxxxx&redirect_uri=http%3A%2F%2Fhogehoge.com&scope=email%2Cphoto_upload%2Cpublish_stream%2Cuser_birthday&display=touch



エラーメッセージによれば、他に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をオーバーライドするのが正解なんだけど、誰か方法教えてください><

スポンサーサイト
該当の記事は見つかりませんでした。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。