instagram APIを使う
こんにちは。
web周りの勉強中です。今回はinstagramAPIを使ってみます。
使用言語はRuby2.0.0(古い)です。
instagramAPIでできる事
ユーザー取得
ユーザー検索
投稿の検索
コメント
フォロー
いいね
・・・etc
instagramアプリケーションの登録
こちらにアクセスしてログインしてください
http://instagram.com/developer/clients/manage/
アクセスしたらRegister a New Clientボタンをクリックしてください。
そしたらこのような画面になると思うので全て入力してください。
Application NameにはInstagramやIG、insta、gramは使えないと書いてますね。
自分はWebsite URLとRedirect URI(s)はどちらもhttp://localhostと書きました。
書いたらRegisterボタンを押します。ここでジャンプしたページに書いてあるCLIENT IDとCLIENT SECRETをメモしておきます。
codeの取得
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
先ほどメモしたCLIENT IDと記入したREDIRECT URIをブラウザのアドレスバーに入力してジャンプします。
そしたらこんなページに飛ぶのでAuthorizeボタンを押します。
これで入力したREDIRECT URIのページに飛ぶのですが、そのページのアドレスの末尾に
?code=1111111111111111111111111111111111
のような数字があると思います。これをまたメモしてください。
access_tokenの取得
ターミナルに以下のコマンドを入力してください。
curl -F 'client_id=CLIENT_ID' \ -F 'client_secret=CLIENT_SECRET' \ -F 'grant_type=authorization_code' \ -F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \ -F 'code=CODE' \ https://api.instagram.com/oauth/access_token
ここで先ほどメモしたCLIENT_ID等を入力してください。
成功したらjsonの出力が返ってきます。これのaccess_tokenをメモしてください。
これで登録は完了です。
instagram gemのインストール
以下のコマンドでinstagram gemをインストールしてください。
$ sudo gem install instagram
コマンド一発でgemの準備はできました。
ソースコード
以下のコードはハッシュタグcatで検索した結果20件の画像URLとその投稿者のfull_nameを表示します。
require 'instagram' Instagram.configure do |config| config.client_id = '(client_id)' config.access_token = '(access_token)' end photos = Instagram.tag_recent_media('cat') photos.each do |photo| puts photo['images']['standard_resolution']['url'] puts photo['caption']['from']['full_name'] end
表示されたURLをブラウザに入力してアクセスするとちゃんと画像を見る事ができます。
日本語で検索したい場合
日本語で検索するには、URLエンコードをしてやらなければなりません。ですので、以下のようにしてください。
まず、uri をrequireする。
require 'uri'
次に、tag_recent_mediaメソッドを以下のようにします。
photos = Instagram.tag_recent_media(URI.escape("猫"),count:100)
これで日本語ハッシュタグでの検索が可能になります。
第二引数のcount:100は、取得数です。ここでは100件取得と指定しているのですが、実際に取得できるのは30件ちょっとでした。
※ワード固定の場合別にソースコード中でエンコードしなくても、こことかでエンコードしてtag_recent_mediaメソッドに入れる方がいいかも・・・www.tagindex.com
参考
Rubyで自分のInstagramの最新5つを取得するにはsmallmakeprgnote.wordpress.com
公式ドキュメント
Module: Instagram::Client::Tags — Documentation for Instagram/instagram-ruby-gem (master)