/* Google Analytics ▽ */ /* Google Analytics △ */

WEB制作の勉強メモ / 猫脳人間

HTML CSS JavaScript ActionScript jQuery WordPress PHP Illustrator Photoshop Flash … 猫サイズの脳でも覚えるぞ と…

Instagram のユーザー情報を取得+写真をサイトに表示+それを自動スクロールする jQuery

Instagram の写真情報を取得してサイトに表示させ、
自動的にスクロールさせる。
これを jQuery と そのライブラリを使って設置してみました。

設置したものが ↓ です。
Test WEBSITE | Silent Cait
以下、この設置したもののままになるようなソースの記述を見本に説明をしています。



Instagram のアカウント取得

アカウントの取得
Instagram
(※ 基本スマホ用アプリで、スマホ写真のシェアを目的としているようなので、主な機能はスマホからでないと使えません。)


Instagram の ユーザー情報「アクセストークン」を取得する

1)以下にアクセスして、ログインします。
Instagram Developer Documentation


2)↓「Register Your Application」をクリックします。
Instagram-アクセストークン取得手順(2)



3)↓以下の項目を入力していきます。
Instagram-アクセストークン取得手順(3)

Application Name: 何でもOK(日本語でも)
Description:何でもOK(日本語でも)
Website URL : 設置するURL
Redirect URL : 設置するURLで問題無し
Contact email: 必須なので一応入力(でもこの処理でメールが来るわけではなさそう)

ここまで入力したら、隣のタブに移ります。



4)チェック項目に注意
Instagram-アクセストークン取得手順(4)
初期設定で、Disable inpliclt OAuth にチェックが入っていますが、これを外さないとエラーになるようです。
両方、チェックを外した状態にして下さい。


5)ロボットではない事を示すキャプチャ入力

Instagram-アクセストークン取得手順(5)

上の画像にはないですが、初めてこの処理をする時は、
画像の数字を入力する項目がありますので、
それを入力してから 『 Register 』 のボタンをクリック。
(文字が読みにくい場合は、リサイクルマークのような〇の小さいボタンをクリックすると、画像が変わります。
スピーカーボタンを押すと文字列を音声で読み上げてくれます)


6)エラーが無ければ以下のような表示になります。
エラーが出た場合は 手順(4)のチェック項目にチェックが入っていないか、確認してください。
Instagram-アクセストークン取得手順(6)
この情報を使い、アクセストークンを取得します。


他の人にウェブ制作などしてもらう場合は、上記の情報のメールアドレス以外を、ウェブ制作してくれる人や業者に情報を渡してください。
もちろん、手順(9)まで進んでからその情報を渡しても大丈夫です。



7)URLに (6)で取得した情報を加えてブラウザでアクセスする
【クライアントID】  → CLIENT ID
【リダイレクトURL】 → REDIRECT URL
以下のURLの2ヶ所を自分の情報に書き換えます。

https://instagram.com/oauth/authorize/?client_id=【クライアントID】&redirect_uri=【リダイレクトURL】&response_type=token


以下のテキストエリアを使って、該当箇所を書き換えてからコピーして下さい。
※改行はしないで下さい
コピーしたら、ブラウザでそのURLにアクセスします。




8)このURLにブラウザでアクセスすると、
リダイレクトURLのサイトが表示されます。
Instagram-アクセストークン取得手順(8)
表示されたサイト自体には意味はなく、この時のURLに、必要な文字列が足されているので、これをまたコピー。
※この画像でのブラウザはスキンを変更しているので、クライアントによってそれぞれ見え方が違うかも知れません



9)手順(8)で表示されたURLを一旦 ここ↓にペーストして見てみましょう。


『 = 』から前のURLはもう使いません。


0123456789.a0b123c.d4567e89f01f234b565ghi78j90k1l2m3
『 . 』 (ドット)2つを含む全体が 「アクセストークン」 で、
この中の最初に
0123456789.
という感じで10ケタの数字があります。
これが、ユーザー固有IDです。

「アクセストークン」
「ユーザー固有ID」
は、この後の jQuery の設置に使いますので、
必ずテキストエディタやメモ帳などに保存して下さい。
※上のテキストエリアの情報はどこにも保存されませんので注意して下さい。




jQuery で WEBサイトに表示させる

必要なライブラリをダウンロード

まず、必要な jQuery
jQuery ライブラリを用意します。

jquery.com
ここでは、jQuery 本体は、Google CDN へ直リンクして使います。


jQuery 本体とは別にダウンロードするライブラリは以下です。

Instagram の写真を表示してくれる jQuery ライブラリ、『 Instafeed.js 』 。instafeedjs.com

↓こちらは 『 Instafeed.js 』の GitHub
mini ではないファイルはこちらからダウンロードしてください。
画面右側の 『 Download ZIP 』 をクリック。github.com




自動スクロールしてくれる jQuery ライブラリ 『 jquery.simplyscroll.js 』。logicbox.net

js フォルダに 上記2つを保存します。




HTMLファイルに記述(1)

HTMLファイルの <head></head>の間の下の方に↓のような感じでコードを記述します(一例です)。
ついでに スタイルシートへのリンクタグも。

<link rel="stylesheet" href="css/style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="js/instafeed.js"></script>
<script src="js/jquery.simplyscroll.js"></script>
<script>
 // ここの記述は後記で
</script>

HTMLファイル内の Instagram の画像を表示させたい部分に 以下の記述を。
id 名、 class 名は、変更しないように。
(変更する場合は プログラム内も)

<div id="scroller">
  <ul id="instafeed" class="clearfix"></ul>
</div>

Instafeed.js のファイル内の設定項目

10行目~16行目

target: 'instafeed',
get: 'user',
resolution: 'low_resolution',
sortBy: 'most-recent',
links: true,
mock: false,
useHttp: false

このライブラリ配布サイト instafeedjs で、
下にスクロールすると、設定項目の説明があります(英語)。

target : これはid名なので、id名を変更したい場合は、
設定項目とHTML側の記述が合うように変更。

get : 自分や特定のユーザーの写真を表示する場合は、'user' で。
そのほかの設定は、「人気の写真」 など、自分とは関係ない人の写真など。

resolution : ここは表示写真のサイズが3択になっていて、
low_resolution は、306px × 306px。
thumbnail (default) - 150x150
low_resolution - 306x306
standard_resolution - 612x612

sortBy : ここは、ソートの方法指定。
most-recent は、新しい→古い 順に表示。

links : ここは、画像をクリックしたら Instagram の写真に
ジャンプするようリンクにするかどうかの設定。
true が「リンクする」 false が「リンクしない」

mock: false,
useHttp: false
この2つは、いじる必要があるのか分からなかったので、そのまま。。。



jquery.simplyscroll.js の設定項目

23行目~34行目

customClass: 'simply-scroll',
frameRate: 24, //No of movements per second
speed: 3, //No of pixels per frame
orientation: 'horizontal',
//'horizontal or 'vertical' - not to be confused with device orientation
auto: true,
autoMode: 'loop', //auto = true, 'loop' or 'bounce',
manualMode: 'end', //auto = false, 'loop' or 'end'
direction: 'forwards', //'forwards' or 'backwards'.
pauseOnHover: true, //autoMode = loop|bounce only
pauseOnTouch: true, //" touch device only
pauseButton: false,
//" generates an extra element to allow manual pausing 
startOnLoad: false //use this to delay starting of plugin until all page assets have loaded

ここでは、
speed: 1, を 3, に変更したのみで、
後はいじっていません。
jquery.simplyscroll.js の配布サイト(英語)で 簡単な説明がありますが、
コメントアウトされている記述程度の説明かも。


HTMLファイルに記述(2) embed

HTMLファイルに記述(1)の記述の下、
embed に、<script> タグに挟む形で以下を記述(一例です)。
userId:
accessToken:
を、取得した自分の情報に書き換えて下さい。

<script>
var userFeed = new Instafeed({
  userId: 【固有ユーザーID数字10ケタ】,
  accessToken: '【アクセストークン 50桁くらいの文字列】',
  limit: 10, //取得投稿の上限を設定
  template: '<li><a href="{{link}}" target="_blank"><img src="{{image}}" alt="{{caption}}"><p>{{caption}}<br><small>{{model.created_time}}</small></p></a></li>',
  filter: function(image) {
 
	var date = new Date(image.created_time*1000);
 
	m = date.getMonth();
	d = date.getDate();
	y = date.getFullYear();
 
	var month_names = new Array ( );
	month_names[month_names.length] = "1";
	month_names[month_names.length] = "2";
	month_names[month_names.length] = "3";
	month_names[month_names.length] = "4";
	month_names[month_names.length] = "5";
	month_names[month_names.length] = "6";
	month_names[month_names.length] = "7";
	month_names[month_names.length] = "8";
	month_names[month_names.length] = "9";
	month_names[month_names.length] = "10";
	month_names[month_names.length] = "11";
	month_names[month_names.length] = "12";
 
	var thetime = y + '年 ' + month_names[m] + '月 ' + d + '日';
 
	image.created_time = thetime;
 
	return true;
	},

  after: function() {
    $('#scroller ul').simplyScroll();
//Instafeed実行後、simplyScrollを実行して横スクロールさせる
  },
});
userFeed.run();
</script>
</head>
<body>

userId: 【固有ユーザーID数字10ケタ】
アクセストークンの取得の所で入手した、固有ユーザーIDで 【】ごと書き換えて下さい。
クォートで挟むとダメでした。

accessToken: '【アクセストークン 50桁くらいの文字列】'
アクセストークン全体の文字列で 【】ごと書き換えて下さい。

limit: 10, スクロールに取得・表示する画像数をここで指定。

template
ここには、表示させたいコードを記述。
上記は、画像、その下にキャプション、更にその下に日付 を表示する記述になっています。

表示できる項目についても ↓配布サイトで説明があります。
Instafeed.js - a simple Instagram javascript plugin


日付を表示するカスタマイズは、このライブラリ作者ご自身の GitHub 内で案内されています↓。
gist.github.com



スタイルシートの記述 style.css

リセットやマージンなど、任意で調整して下さい。
(設置サイトのものは マージンやパディングなど0にリセットしてから下記の記述をしています。)
以下は一例です。(未熟者の記述です)
キャプションの文章が長いと、レイアウトが違ってくるかも知れませんので、ご自身の場合の表示確認はしっかりしてください
ここでは、HTML側の template 設定で キャプション・日付 までリンクのタグで挟んでいますので、タグで挟む範囲やリンクの文字色などの設定も、お好みで変更してください。

ul {
  list-style: none !important;
}

/* ── Instagram jQuery simplyScroll ─────*/
.simply-scroll-container {
   position: relative;
}
.simply-scroll-clip {
  position: relative;
  overflow: hidden;
}
.simply-scroll-list {
  overflow: hidden;
}
.simply-scroll-list li {
  float: left;
  margin-left: 34px;
  width: 320px;
  font-size: 12px;
  line-height: 14px;
 }
 
.simply-scroll-list li img {
  display: block;
  border: 7px solid #FFF;
  box-shadow: 0 0 1px #888;
  margin-bottom: 14px;
 }




上、見本に記述しているソースそのままの設定で、↓このように表示されます(クリックすると 設置したサイトにジャンプします)。

Instagram の画像をサイトに表示・自動スクロールさせる

もしも参考になるなら、ソースなどご自由にご覧(ご利用)ください。






分の理解力・経験では 解説しているサイトやブログの解読が難しかったですが、以下のサイトを参考にさせていただきました。


www.nextsoft.jp

Instafeed.js - a simple Instagram javascript plugin

stevenschobert/instafeed.js · GitHub

syncer.jp


github.com

liginc.co.jp

www.sharecoto.co.jp

アプリの最新写真をショップに一覧表示させる方法《HTMLカスタマイズ》 | ECお役立ち情報 – ネットショップ運営サービス【カラーミーショップ】


Instagram 公式サイト
Instagram Developer Documentation

Instagram を表示する jQuery ライブラリ
Instafeed.js - a simple Instagram javascript plugin

jQuery 自動スクロールするライブラリ
jQuery simplyScroll - Logicbox