ソーシャルログイン’ を90秒で導入する方法 / OAuth認証

**TLDR: oauth.ioというSNSアカウント等を用いたOAuth認証を簡単に導入できるツールの使い方を説明します。**  
<img width="939" alt="image1.png" src="https://qiita-image-store.s3.amazonaws.com/0/192668/8bf02ec2-51d9-a61a-e4c4-faedd5274a1d.png">  
SNSのアカウントを利用して会員登録するWEBサービスはたくさんあります。ユーザー登録の際に必要な情報を入力するという手間を排除することで、高いユーザーの登録率が期待できます。また、新規会員の友達関係、趣味、よく訪問する場所などの属性情報等を最初から獲得できます。

このようなソーシャルログインの機能は、OAuth認証 (オースと読む、現在はバージョン2）と呼ばれています。ただ、仕組みは簡単ではありません。（下図参考）

![image7.png](https://qiita-image-store.s3.amazonaws.com/0/192668/5de2a0e3-ea98-ef57-4dda-212a531831ad.png)

Courtesy of: https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2  

OAuth認証を用いて、SNSで簡単にログインできる導線を作るために、単調な手順を各種連携アカウントに対して繰返し行う必要があります。また、Facebook、Twitter、Instagramが利用するようなOAuth2の仕様は、やや独自仕様になっている傾向があります。このような手間をoauth.ioを使うことで、簡単にSNSを用いた登録ボタンを作成できます。

oauth.ioは既に170以上のOAuth2アイデンティティプロバイダの特質を把握しており、直ぐに各種対応したいSNSの登録ボタンを作成することができるようになります。


Step 1: 好きなアイデンティティプロバイダを利用してアカウントを作成します。 
https://oauth.io/signup
<img width="336" alt="oauth90_create_user.png" src="https://qiita-image-store.s3.amazonaws.com/0/192668/68b2992c-306d-06b4-f4ed-32807874df0b.png">

Step 2: ダッシュボードにて、画面左側にある ‘Integrated APIs’を選択します。
![oauth90_integrated_apis.png](https://qiita-image-store.s3.amazonaws.com/0/192668/6f095940-e395-6972-58e0-b322b4b5382f.png)

Step 3: ここから連携したいサービスを選択します（サンプルでInstagramを使ってみます）

<img width="595" alt="image2.png" src="https://qiita-image-store.s3.amazonaws.com/0/192668/82328a31-12d4-d3ba-5c69-fa83c758cbeb.png">

Step 4: Create ⇒ integrate ⇒ ‘Instagram’ アプリの手順で進めます
　a. ‘Instagram’ appの作り方の説明を読む (ページ下部の補足で詳細説明)
　b. OAuth認証から求められるリクエストは何処にあるのかを確認する
 (ページ下部補足の最後の方を確認)
　c. bの手順で得た情報をコピー＆ペーストする
　d. ‘Save Changes’をクリックする
![image13.png](https://qiita-image-store.s3.amazonaws.com/0/192668/3057b3e4-f56a-b0c5-580d-d205c73501ca.png)

Step 5: 青色の ‘Try Auth’ ボタンを選択します。
![image4.png](https://qiita-image-store.s3.amazonaws.com/0/192668/e898c75d-208c-47e9-c00f-e6e008bc1e63.png)

Step 6: InstagramのユーザーIDとパスワードを入力します。 
<img width="422" alt="image6.png" src="https://qiita-image-store.s3.amazonaws.com/0/192668/7e7055ed-6186-32fd-17f8-26bca24d2ae6.png">

Step 7: Instagramのパーミッション認証ページが表示されます。
<img width="614" alt="oauth90_ig_1.png" src="https://qiita-image-store.s3.amazonaws.com/0/192668/ff885051-ce87-29d9-9365-ebc84fbce69c.png">

Step 8: ログインに成功し、必要なパーミッションを認証した場合：
　a. oauth.ioのAPI Keyが発行されます; このKeyにより、oauth.ioで設定したすべての連携先にアクセスできます
　b. コードスニペットをコピーし、”Instagramを使って登録”ボタンを設置したい場所にペーストします。
　c. Instagramからのレスポンスが確認できます。
　d. レスポンスで取得した Javascript オブジェクトの詳細な利用方法です。
<img width="472" alt="oauth90_ig_2.png" src="https://qiita-image-store.s3.amazonaws.com/0/192668/f5674aed-0d8d-77d9-eb76-0dd3869d5d37.png">

だいたい90秒くらいで出来たでしょうか？

(2017.10.12 訂正)
コードスニペットを試すには、以下のリンク先をご利用ください。
https://jsfiddle.net/ringcaptcha/9b9enpwe/4/

~~コードスニペットを試すには、oauth.io APIキーをコピーしてhttp://oauth-io.github.io/oauth-js/ にアクセスし、APIキーをスニペットに貼り付け、‘Connect with XXXX’ をクリックします。~~
<img width="976" alt="image5.png" src="https://qiita-image-store.s3.amazonaws.com/0/192668/6bc3f60b-11e1-0c5c-b2c0-a7b920a94d54.png">

~~より詳しい説明はこちらをご確認下さい。: http://oauth-io.github.io/oauth-js/~~  

各種質問はこちら: support@oauth.io

**補足**

Step 1: https://www.instagram.com/developer/. へアクセスし、 ‘Sign up’ を選択
![image17.png](https://qiita-image-store.s3.amazonaws.com/0/192668/070777c6-c368-3e9b-bfad-7d6aa81baf12.png)

Step 2: 確認メールを受信し、承認します。 
![image19.png](https://qiita-image-store.s3.amazonaws.com/0/192668/1495ef8d-864f-3f67-7523-b71a40b6c730.png)

Step 3: 2までの手順を経て、ログインできるようになります。右上の‘Manage Clients’ を選択。  
![image8.png](https://qiita-image-store.s3.amazonaws.com/0/192668/164f6b09-729d-7448-91ad-be4284bb3fcc.png)

Step 4: ‘Manage Clients’内のダッシュボードから、 ‘Register a New Client’ を選択する
![image9.png](https://qiita-image-store.s3.amazonaws.com/0/192668/b38c1479-1a8e-dd5c-7c4a-ae39c0de97dc.png)

Step 5: Instagram Appの詳細を記入します。 ‘Valid Redirect URL’ をしっかり記入し、エンターキーを必ず押してください
![image3.png](https://qiita-image-store.s3.amazonaws.com/0/192668/74748af5-1b5f-9530-4f30-acf6fd6fb0bd.png)

Step 6: ‘Security’タブを選択し、 ‘Disable implicit OAuth’のチェックを外します。そうすることで、clientサイドでJavascriptスニペットが利用できるようになります。

![image18.png](https://qiita-image-store.s3.amazonaws.com/0/192668/a6306806-47d7-fb8d-b019-b9be2349686c.png)

Step 7:  ‘Register’ を選択するとInstagram Appの作成が完了します。 ‘Manage Clients’ をダッシュボードから確認でき、右上の‘Manage’を選択するこで管理画面へ遷移できます。
![image10.png](https://qiita-image-store.s3.amazonaws.com/0/192668/06ac9e19-d380-6c47-d2ef-6b0ee5a3f244.png)

Step 8:  oauth.ioで必要な‘Client ID’ と ‘Client Secret’を設定することができます
![oauth90_manage.png](https://qiita-image-store.s3.amazonaws.com/0/192668/a044efb3-61f7-44ee-4e47-7f42e761b46c.png)