【Ruby on Rails】instagram apiを利用してoauth認証・タイムラインを表示する

2017年8月22日Rubyapi, Instagram, Ruby, Ruby on Rails, タイムライン

スポンサーリンク

週末プログラミングの時間がやってまいりました。

現在、僕は各種SNSのタイムラインをログに残すというサービスを開発中なんですが、その一部をご紹介します。

前提としてfacebookに買収されたinstagramですが、広告配信を開始したりとアドテクの分野でも話題に上がるようになってきており、無視できない媒体になっています。(instagramがなぜ広告モデルを始めたのか、それは別ページでご紹介させていただきます。)

instagramのapiを弄って利用したいと考えているウェブ系の方は多いと思います。

ただし、最近apiの実装が可能になったこともありまだまだ検索しても情報は少ないです。

僕が行っている実装方法等をまとめます。(oauth認証からタイムライン取得まで。)

ちなみに、instagram api自体は非常に取り扱いやすい仕様になっていて、好感が持てます。facebook 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のタブをクリックし、新規登録することで簡単に作成できます。

上記画面の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に関してはクソ適当です。気にしないでください。

以下でapiの処理部分の内容について記述したファイルの中身を見てみましょう。

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

本当はdeviseを用いたoauth認証にするのがイケてると思いますが、僕の開発中のサービスは都度タイムラインをapi叩いて取得するため、deviseを導入する意味がありません。

結果、sessionにaccess_tokenをぶち込むという謎設計になっています。。

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

これは開発中のサービスの状況に合わせて柔軟に設定変更してください。

そんなに謎な実装をせずに、自分のタイムラインを表示させることができます。

ちなみに二次元配列(連想配列)に投稿の要素を格納したいのですが、知識不足でイマイチ分かっておらず・・分かり次第更新します。

ここまでお読みいただき、ありがとうございます!

未経験の僕がRuby on Railsをここまで扱えるようになったのは「TechAcademy」のおかげです。

僕はアドテクに関するお仕事をしていますが、学生時代の専攻が情報系であったこともありません。

しかし、ここまでコードを書けるようになったのは「TechAcademy」というプログラミングスクールのカリキュラム取り組んだおかげです。

気になる方はぜひ、以下記事を御覧くださいね。

スポンサーリンク

2017年8月22日Rubyapi, Instagram, Ruby, Ruby on Rails, タイムライン

Posted by 管理人