はじめに
先日、Angular で Google の OAuth 認証を行う方法として、かなり頑張って以下の方法をご紹介しました。
ですが、さらに調べてみると Google でも Facebook と同じような SDK が用意されていて、簡単に OAuth 認証できることが分かりました。
Google OAuth 認証
Google API Console でクライアント ID を取得するところまでは同じなのですが、OAuth認証はindex.html
を以下のように書き換えるだけで実装可能です。
<html lang="jp"> <head> <meta name="google-signin-scope" content="profile email"> <meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com"> <script src="https://apis.google.com/js/platform.js" async defer></script> </head> <body> <div class="g-signin2" data-onsuccess="onSignIn" data-theme="dark"></div> <script> function onSignIn(googleUser) { // Useful data for your client-side scripts: var profile = googleUser.getBasicProfile(); console.log("ID: " + profile.getId()); // Don't send this directly to your server! console.log('Full Name: ' + profile.getName()); console.log('Given Name: ' + profile.getGivenName()); console.log('Family Name: ' + profile.getFamilyName()); console.log("Image URL: " + profile.getImageUrl()); console.log("Email: " + profile.getEmail()); // The ID token you need to pass to your backend: var id_token = googleUser.getAuthResponse().id_token; console.log("ID Token: " + id_token); }; </script> </body> </html>
これを実行すると、正しく Google の認証画面がポップアップで表示され、ユーザー情報も正しく取得することができました。
あの苦労は一体何だったのかという感じですが。💦
ちなみに、Google のログインボタンは SDK のものだけでなく、公式サイトからダウンロードすることもできます。
Sign-In Branding Guidelines | Google Identity Platform | Google Developers
ログアウト処理
ログアウト(サインアウト)処理は以下の関数を呼び出すことで実行可能です。
function signOut() { var auth2 = gapi.auth2.getAuthInstance(); auth2.signOut().then(function () { console.log('User signed out.'); }); }
ログインステータス取得
ログインステータスは以下の関数を呼び出すことで取得できます。
function loginCheck() { var auth2 = gapi.auth2.getAuthInstance(); if (auth2.isSignedIn.get()) { console.log('login now.'); } else { console.log('logout now.'); } }
おわりに
Google OAuth 認証はなかなかまとまった情報がないので、集めるのに苦労しました。
公式サイトには一応書いてあるのですが、そこにたどり着くのが、なかなか。
この記事が、参考になれば幸いです。