週末プログラミングの時間がやってまいりました。 現在、僕は各種SNSのタイムラインをログに残すというサービスを開発中なんですが、その一部をご紹介します。 前提としてfacebookに買収されたinstagramですが、広告配信を開始したりとアドテクの分野でも話題に上がるようになってきており、無視できない媒体になっています。 (instagramがなぜ広告モデルを始めたのか、それは別ページでご紹介させていただきます。) instagramのapiを弄って利用したいと考えているウェブ系の方は多いと思います。 ただし、最近apiの実装が可能になったこともありまだまだ検索しても情報は少ないです。 僕が行っている実装方法等をまとめます。(oauth認証からタイムライン取得まで。) ちなみに、instagram api自体は非常に取り扱いやすい仕様になっていて、好感が持てます。facebook apiはクソ。マジで面倒臭い。 (参考:instagram apiリファレンス)

スポンサーリンク

instagram apiを使ってタイムラインを表示してみよう

Railsの場合、便利なgemファイルがあるので、以下を入れておきましょう。(Rails 4.2.4, ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15])

Gemfileの中身

コメントに書いてある通りですが、説明を。 どのSNS apiでもそうですが、所定のURLにpostでアクセストークンなどを載せてリクエストを送ればjsonが返ってくるという仕様になっています。 なので、上記gemを導入しているとRailsの場合実装が非常に簡単になります。

instagram.rbを設定しておく(/config/initializers/instagram.rb)←名称はinstagram.rbにしないとダメ

client id, client secretって何ぞ?という方も多いと思います。 こちらはinstagramの開発用アカウント(https://instagram.com/developer/)からアプリケーションを登録することで取得することができます。 リンク先を表示して、Manage Clientsのタブをクリックし、新規登録することで簡単に作成できます。 スクリーンショット 2015-10-24 17.06.47 スクリーンショット 2015-10-24 17.07.00   上記画面のclient idとclient secretを先ほどのinstagram.rbに貼り付けましょう。

routes.rbはこんな感じ(/config/routes.rb)

※Railsのrest fulなルーティング設定に関してはよく分かっていないので、もっと良い設定絶対あります。 上記設定は、instagram_controller.rbの中身も確認した上でご自身の設計に合わせて設定してください。

application.html.erbは適当に。(/view/layouts/application.html.erb)

リンク先URLは、/auth/instagramというpathで設定しましょう。 これはapiリファレンスを見れば分かりますが、instagram側でgetで上記pathにリクエストを送ることで、アクセストークン発行用のURlにリダイレクトされます。 ちなみにhtmlに関してはクソ適当です。気にしないでください。(参考:SEO対策に大切な見出しタグ(hタグ)の使い方。理解のコツはhtmlの構造理解から!強調タグ(b,strong,em,i)のSEO効果についてそろそろ決着を付けよう) 以下でapiの処理部分の内容について記述したファイルの中身を見てみましょう。

instagram_controller.rbでほとんどの処理をさせる

本当はdeviseを用いたoauth認証にするのがイケてると思いますが、僕の開発中のサービスは都度タイムラインをapi叩いて取得するため、deviseを導入する意味がありません。 結果、sessionにaccess_tokenをぶち込むという謎設計になっています。。

sessions_controller.rbも一応作っておいた。

これは開発中のサービスの状況に合わせて柔軟に設定変更してください。。   そんなに謎な実装をせずに、自分のタイムラインを表示させることができます。 ちなみに二次元配列(連想配列)に投稿の要素を格納したいのですが、知識不足でイマイチ分かっておらず・・分かり次第更新します。 お読みいただきありがとうございます!

TechAcademyでRuby on Railsを習得する

スポンサーリンク
5cd860842016e7c67ba5bdb170266639_s

この記事が役に立ったらいいね!をしよう