FirebaseUIはFirebase Authentication SDK上に構築されるライブラリで、アプリで使用するログイン機能とUIを提供してくれるものです。
メールアドレス、Facebook、Twitter、GitHub、電話番号といった複数のプロバイダに対応しています。
今回はTwitterでログインできるようにします。
Twitter Appsの作成
https://apps.twitter.com/app/new から新しいAppsを作成します。
Callback URLは後で入力します。
Firebase Authenticationの設定を変更する
Authentication -> ログイン方法
からログインプロバイダの設定を変更します。
今回はTwitterを有効にしました。
APIキーとAPIシークレットは ↑で作成したAppsのものを使いましょう。
コールバックURLをTwitter Appに追加
↑でTwitterを有効にするときに表示されたコールバックURLをTwitter Appに追加します。
コード
Firebaseのドキュメントのコードほぼそのままで動きます。 (僕はconfig間違えてて無駄にハマった。。。) configの値は各自の環境に合わせてください。
<script src="https://www.gstatic.com/firebasejs/5.0/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/5.0/firebase-auth.js"></script> <script src='https://cdn.firebase.com/js/client/2.2.1/firebase.js'></script> <script src="https://cdn.firebase.com/libs/firebaseui/2.5.1/firebaseui.js"></script> <link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/2.5.1/firebaseui.css" /> <script> var config = { apiKey: "<API_KEY>", authDomain: "<PROJECT_ID>.firebaseapp.com", databaseURL: "https://<DATABASE_NAME>.firebaseio.com", storageBucket: "<BUCKET>.appspot.com", messagingSenderId: "<SENDER_ID>", }; firebase.initializeApp(config); var ui = new firebaseui.auth.AuthUI(firebase.auth()); var uiConfig = { callbacks: { signInSuccessWithAuthResult: function(authResult, redirectUrl) { // User successfully signed in. // Return type determines whether we continue the redirect automatically // or whether we leave that to developer to handle. return true; }, uiShown: function() { // The widget is rendered. // Hide the loader. document.getElementById('loader').style.display = 'none'; } }, // Will use popup for IDP Providers sign-in flow instead of the default, redirect. signInFlow: 'popup', signInSuccessUrl: 'http://example.com',// Sign in後の遷移先 signInOptions: [ // Leave the lines as is for the providers you want to offer your users. firebase.auth.GoogleAuthProvider.PROVIDER_ID, firebase.auth.FacebookAuthProvider.PROVIDER_ID, firebase.auth.TwitterAuthProvider.PROVIDER_ID, firebase.auth.GithubAuthProvider.PROVIDER_ID, firebase.auth.EmailAuthProvider.PROVIDER_ID, firebase.auth.PhoneAuthProvider.PROVIDER_ID ], // Terms of service url. tosUrl: '' }; ui.start('#firebaseui-auth-container', uiConfig); </script> <h1>Welcome to My Awesome App</h1> <div id="firebaseui-auth-container"></div> <div id="loader">Loading...</div>
こんな感じで表示されます。
Sign in with Twitter
をクリックした後 Authorize app
すればログイン完了です。
Firebase Authenticationのコンソールを見るとユーザーが作成されていることがわかります。
まとめ
FirebaseUIを使うと簡単にTwitterログインを実装することができました。
次はFirebase SDKを使ってログイン機能の実装をしていきたいと思います。