GoogleCloudにアクセス
1. サイトにアクセス(Googleログイン済みの状態)
GoogleCloud
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPBqWL7yrFTkUEJ4z9EDl8v4Aw1tfg8yQHu4McIoKwRp3B10IEbd3PFfqk1Hs6VpxY7qqGIG1fdF7bl2GVNMLdcqE6a88EPi9y_oNnKQI9nqaY037opXJHqcBbpFWjtwdm58fc2bTq0MEUAfi41GmShsfOW7CQtFwyFfFPXihH57PQ2XTlnyIH1y2p/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-08%2011.39.52.png)
利用規約などにチェックをして、同意して次に進む。
2. プロジェクトの選択をクリック
3. 新しいプロジェクトをクリック
4. プロジェクト名を入力
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49lDQgfAs4pmqDIHxxgRd_VYGKANHC3xEmYyan9K0zRv_AUORNy_oV6TK17cRMSOeMszr86VuhJdLXLp1WQG4bJLf-hYfd9UI8YKEIPxNuT5V2HKm5sMovPIEsWcdKahfdlZTJScn5KNfdh6iGNBQouldvGN9O3OLaQkn5PHmaZU0C04ViHtiaZG_/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-08%2011.45.43.png)
登録完了すると、下記のような表示になります。
5. OAuth同意情報をクリック
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXuMfRBtIlLi9HymTuckmiu3z2wL7p6pdQIGSOOSIwAey8ImwrtVPdOyRRCgYg4Ic8mAzMape6ynsM_d5OfPa1_Uemf-sJ3_LVMug9toGk-GY063t7s1AAVDeYZm8LHX6ECtWu6DyGVGxc-2vuWLYbW4Xao9OuHNgiVox645VJacY-g5lvaXXX2bbR/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-08%2012.01.11.png)
公開型のWEBページで使うので、「外部」を選択して、「作成」ボタンをクリック。
アプリ名とサポートメールを入力
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvOWsnS5zzO4gr9y-0G0Jg-1AOfKx-uStl8Vvcb2H16Gdox0KuWPoe-R8vQdu6ap6rNCQgWnKjVdg_hklCoRNhr6XqqGNOhqczPwdPqYshZwleOZfvPMh4EX--0JfkHji2Qn-uo2eeXxGyb60nfeR1t4lZ4JfA5eAjT_csfcbdbbFL-Sfpu4CTeA2_/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-08%2012.04.22.png)
ディベロッパーのメールアドレスを入力(上記と同じものを入力しました。)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ8KYhFyT11tHrd8tuzPjZ32ZD83K0o1OyUuVCV4T1jcQC-yrTkCH69X5iB7UuRkQjo5EW3d-KZ4JaDMaUKX8tceSxqFc_xnSOubf_55Zm6GXgP3-7bJHdJWtksMQMi2gscujtvVbWpPpdC0-AcfBrEK40tE9rRae4PYtz85esOTeDs7qWNxt_waC7/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-08%2012.04.39.png)
他のところは未記入で、保存して完了しましょう。
6. 認証情報をクリック
7. 認証情報を作成 - OAuthクライアントIDをクリック
8. アプリケーションの種類で「ウェブアプリケーション」を選択
9. 認証済みのJavascript生成元を登録
公開するURLと、開発環境のURLを登録しておきます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb48kwN7Ai2bRVfDmUEfI41OuvGAm--YyaSc1iHVjnpYINOKRbF_2on0dDs1ihznlDix6sWvJarvUfZmyzJQ4k3qvvbw00ScoedJUA0wXtSJ7zSFmgG3LEs2yclu08RNAJJfgykVcOvmOVnxjb5KOyy6hdp7OJvlgeZAhzdcEaG242TlwuXq0RFNW_/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-08%2012.48.21.png)
開発環境が、"http://localhost:8888"のようにポート番号がある場合は、下記のように2種類の登録をしないと正常にアクセスできません。
http://localhost
http://localhost:8888
登録が完了したら、「作成」ボタンを押す。
10. 登録完了画面で、JSONデータをダウンロードしておく
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7Y_DeU6s0it1WtuopNWcG846frlT42QeCXKf4BabnMFvJpVhOEk19UWk5npOA4oa7zXjyFMmpPG9h4k_JA00FQ7U_kxAF2Q8LYu6NXBEo0-aOnqFSWKui9rXfHDnzfNlzUiz_ID0_hd-h6qYq400vWhLRiMirLkjfz-47HMazAG8ff9o0vn59tqQJ/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-08%2012.50.31.png)
"google_oauth.json"というファイル名で保存しておきました。
WEBページのJavascriptの記述方法
クライアントIDが書かれたJSONファイルが取得できたら、それを読み込んで、OAuth認証できるように、ホームページの設定を行います。
汎用的に対応できるように、処理をライブラリ化して、htmlで読み込んで使えるようにしておきました。
index.html
<script src='google_oauth.js'></script>
<div id='google_oauth'></div>
<div id='user'></div>
google_oauth.js
(()=>{
function Main(){
this.load_json()
}
Main.prototype.load_json = function(){
const xhr = new XMLHttpRequest()
xhr.open('get' , 'google_oauth.json' , true)
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = this.loaded_json.bind(this)
xhr.send()
}
Main.prototype.loaded_json = function(e){
this.json_data = JSON.parse(e.target.response)
this.load_module()
}
Main.prototype.load_module = function(){
const script = document.createElement('script')
script.src = 'https://accounts.google.com/gsi/client'
script.onload = (()=>{
this.init_module()
this.view_login_button()
}).bind(this)
document.querySelector('head').appendChild(script)
}
Main.prototype.init_module = function(){
google.accounts.id.initialize({
prompt_parent_id : 'google_oauth',
client_id : this.json_data.web.client_id,
prompt_close_button : false,
callback : this.login_callback.bind(this),
})
}
Main.prototype.view_login_button = function(){
google.accounts.id.renderButton(document.getElementById('google_oauth') , {
logo_alignment : 'center',
size : 'medium',
type : 'icon',
})
}
Main.prototype.login_callback = function(e){
const data = this.jwt_decode(e.credential)
this.logined_icon_view(data)
}
Main.prototype.logined_icon_view = function(data){
if(!data || !data.picture){return}
const elm = document.getElementById('user')
if(!elm){return}
const img = new Image()
img.src = data.picture
elm.innerHTML = ''
elm.appendChild(img)
}
Main.prototype.jwt_decode = function(jwt){
const base64Url = jwt.split('.')[1]
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')
const str1 = atob(base64)
const str2 = escape(str1)
const str3 = decodeURIComponent(str2)
return JSON.parse(str3)
}
switch(document.readyState){
case 'complete':
case 'interactive':
new Main()
break
default:
window.addEventListener('DOMContentLoaded' , (()=>{new Main()}))
}
})()
Howto
1. index.htmlをブラウザで開くと、Googleのログインアイコンが表示されるので、クリックして、Googleでログインをする。
2. ログイン後に、ページに戻ってきて、ログインで取得した、画像が表示されます。
ログインデータは、名前、メールアドレス、などが取得できるので、cookieやLocalStorageなどに格納して、ログイン状態を保持することで、
簡易にログインシステムを構築することが可能です。
注意点
GoogleCloudの無料枠が、1月に100ユーザーまでの利用になっています。
それ以上のユーザーになる場合は、有料課金するか、別のログイン方式にしてください。
エラー対応
うまく、ログインボタンが表示されなくて、ブラウザコンソールに、次のようなエラーが出る場合。
Failed to load resource: the server responded with a status of 403 ()
m=credential_button_library:44 [GSI_LOGGER]: The given origin is not allowed for the given client ID.
こんな場合は、GoogleCloudの設定に問題がある場合がほとんどです。
そして、ほとんどが、「認証済みのJavascript生成元の登録」のURL登録が正常にできていない事が原因です。