This authorization code has been used
Rails4のoauth認証でハマった。
http://npb.somewhatgood.com/blog/archives/715
のサイトを参考にしてfacebookからoauthを使用してユーザー情報を取得しようとした。
しかし、csrf系のエラーが発生!
これは
Rails.application.config.middleware.use OmniAuth::Builder do provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], :provider_ignores_state => true end
provider_ignores_stateをtrueにすると回避出来るらしい。
しかし、その後もエラーでThis authorization code has been usedという、メッセージがfacebookから返ってくる。しかも一度目エラーが出て、ブラウザのバックボダンで戻って再度やると通る…
セッションとか、Facebook Develooperのアプリ設定が間違いがあるのではないかと、調べたが解決しない。
結局、新規アプリを作ってそこに組み込んでみて試して、今のアプリと比較したところ、現状のRailsアプリにはベーシック認証がかかっており、これを外すとちゃんと動作した。
エラーメッセージと原因がリンクしてなかったので、めちゃくちゃ時間がかかった。
もし、同じバグにあったら一度oauth認証ではベーシック認証を外してみることをおすすめする。
Rails4 tubolink ios7
Rails4のtubolinkを使っていて、jqueryを読み込みたいところだけ、
プロパティで'data-no-turbolink' => trueを指定していたのだが、ios7のブラウザでリンクを押すと、リンク先でリロードすると画面が真っ白になるバグがあった。とりあえず、tubolinkを解除したのだが、ios7ではこのようなバグがあるらしい。
自分だけかな。。
Android UI
現在、社内の案件でAndroidアプリを担当することになった。
今、仕事で問題になっているのが、カメラで写真を撮って保存する作業。
これは、ネットに沢山のソースコードを参考にできるので保存するまでは比較的簡単にできた。
問題は、撮影中と撮影後の画面のレイアウトを変えたい点である。
onPictureTaken()の最後に画面のViewを替える処理をしたところ、アプリが強制終了してしまう。
例えば、Intentを作成して他のActivityに変更してみたり、また非表示にしていたアイコンを表示する処理をしたところ止まってしまう。
それで、色々と調べていたところスレッドに関する処理を間違えていたせいで終了するのではないかと、感じている。
スレッド処理を今までやったことがなかったので、すこし調べる必要があるのかもしれない。
Rails 中間テーブル
Railsでつまずいた。
プライマリーキーのない中間テーブルを作成して、そのテーブルは2つのテーブルを参照している。
そのテーブルに対して、UPDATEをかけようとしようとするが、プライマリーキーがないせいかINSERTになってしまう。
editアクションをするたびに新規作成されるので困った。
先輩に聞いたところ、先輩はUPDATEではなく、DELETEしてからINSERTをするようにアドバイスされた。きっと、プライマリーキーを他に設定する方法がActiverecordの中にあるのだが、時間がないためこの方法を仕方なくとってみる。