##ゼロからソーシャルログインボタンを簡単(<50行コード)React.jsで導入する方法
OAuth認証を簡単にしてくれるOAuth.ioを使用します。OAuth.ioは、170以上のOAuth2.0アイデンティティプロバイダ(Facebook,Twitter,Google,Linkedinなど )の特質を把握しており、直ぐに各種対応したいSNSの登録ボタンを作成することが出来ます。ドキュメントとSDK(ソフトウェア開発キット)もJavaScript, NodeJS, PHP, iOS, Android向けに用意されています。
今回の記事では、'Github'を例として説明します。
上記のボタンをあなたのサービスのログインページに導入する事により、
ユーザーネームとパスワードのログインの他にGithubアカウントでのログインを追加する事が出来ます。
今では多くのサービスが、このようなSNSアカウントによるログインを導入しています。
こちらからボタン動作を確認できます。
https://jsfiddle.net/4cztpg16/2/
導入までのSteps
- React app 作成
- 必要な外部ソースをReact appに取得
- OAuth.io を React app に追加
- Github appを作成
- OAuth.ioのアカウントを作成
- OAuth.ioアカウントとリンクさせる
###Step1. React App作成
最初にベースとなる、シングルページのReactアプリを作成します。
__create-react-app__ライブラリーを使用します。
React.jsのドキュメントはこちらになります。
https://reactjs.org/docs/add-react-to-a-new-app.html
- まず、yarnをインストールします。
// For macOS
$ brew install yarn
- 既にReactアプリをお持ちの方は、Step2.へ進んでください。
$ npm install -g create-react-app
$ create-react-app github-login-demo
$ cd github-login-demo
$ yarn start
###Step2. 外部ソースをReact Appに追加
'Github login button'をデザインするために、bootstrap-social ライブリーを使用します。
このライブラリーは、多くのソーシャルボタンのbootstrap、Font Awesome、のCSSを含んでいるので、簡単にソーシャルボタンを表示出来ます。
$ yarn add bootstrap-social
###Step3. React AppにOAuth.io を導入する
- App.jsに下記のコードを記述して、'Sign in with Github' ボタンを表示させる。
- 'YOUR_OAUTH_API_KEY'をStep5.OAuth.ioアカウント作成時に表示されるAPIkeyに置き換えて下さい。
:App.js
import React, { Component } from 'react';
import 'font-awesome/css/font-awesome.css';
import 'bootstrap/dist/css/bootstrap.min.css';
import 'bootstrap-social/bootstrap-social.css';
class App extends Component {
// oauth.jsをCDNからダウンロードする。(外部のスクリプトを追加するのと同じように出来ます。)
componentDidMount () {
const oauthScript = document.createElement("script");
oauthScript.src = "https://cdn.rawgit.com/oauth-io/oauth-js/c5af4519/dist/oauth.js";
document.body.appendChild(oauthScript);
}
handleClick(e) {
// ページのリロードを防止する。
e.preventDefault();
// API keyを使ってOAuth.ioを初期化する。
// OAuth.io登録後にメモした、あなたのAPIkeyを'YOUR_OAUTH_API_KEY'に記入します。
window.OAuth.initialize('YOUR_OAUTH_API_KEY');
// ポップアップウインドウを表示し、Githubの承認する。
window.OAuth.popup('github').then((provider) => {
// 'welcome'メッセージをユーザの名前と一緒に表示する。
// 取得したユーザーのデータをコンソールで確認する。
provider.me().then((data) => {
console.log("data: ", data);
alert("Welcome " + data.name + "!");
});
// また、.get()にてGithub's APIから取得も出来ます。
provider.get('/user').then((data) => {
console.log('self data:', data);
});
});
}
render() {
return <a href="" onClick={this.handleClick.bind(this)} className="btn btn-social btn-github">
<span className="fa fa-github"></span> Sign in with Github
</a>;
}
}
export default App;
まだ、OAuth.ioはnpmJSに対応していない為、componentDidMount()functionを使用してCDNファイルを読み込んでいます。
Webpackを使用している場合は、(external)でも代用出来ます。
- プログラムを実行しましょう
$ yarn start
###Step4. Github appを作成し、OAuth.ioアカウントとリンクさせる
-
こちらから、簡単にGithubデベロッパー用のOAuth appが作成出来ます。
'https://github.com/settings/applications/new' -
Authorization callback URLには、'https://oauth.io/auth' と記入して下さい。
-
全て記入したら'Register Application'をクリック
アプリが無事登録されました。
- 表示されているClient ID','Client Secret'をメモします。
###Step5. OAuth.io のアカウントを作成し、API keyを取得
- これからのステップを動画で確認
- OAuth.ioのアカウント作成 https://oauth.io/signup
- サインアップ後、メインダッシュボードが表示されます。
- AppkeyのPublic KeyをStep3.App.jsの'YOUR_OAUTH_API_KEY'に記入する
- 画面左側の”Integrated APIs ”をクリック
- Integrated APIsの画面右側に表示される'+Add APIs'をクリック
'Add a provider to your app'利用可能なサービスが表示されます。
- 'Github'をクリック
- Githubでメモした、'Client ID','Client Secret'を'client_id','client_secret'それぞれへ記入します。
- 'scope'には'user'と記入します。
- 記入し終わったら”Save changes”をクリック
- 'Try Auth'ボタンをクリック
Githubの認証画面に飛びます。
- 'Authorize'をクリックして、許可を与えます。
Githubとの連携が成功すると、下記ポップアップが表示されます。
a. oauth.ioのAPI Keyが発行されます; このKeyにより、oauth.ioで設定したすべての連携先にアクセスできます
b. コードスニペットをコピーし、”Githubを使って登録”ボタンを設置したい場所にペーストします。
c. Github からのレスポンスが確認できます。
d. レスポンスで取得した Javascript オブジェクトの詳細な利用方法です。
たったこれだけで、Github ログインボタンをあなたのサービスに導入できました。
今回の記事はフロントエンド部分だけの説明でした。今のままでは、バックエンドはフロントエンドが何をしているのかわかりません。なので、バックエンドのコントローラーにコードを追加しなければなりません。こちらから(SDK)のドキュメントを確認できます。