MatsuoTech

技術メモとひとりごと。

Vue.jsでGoogle Signinをライブラリ使わずに実装してみた。

f:id:mathkm:20200304031454g:plain
vue-cliで生成したプロジェクトだと、サンプルコードを貼るだけでは、CDNのロードとVue.jsのサイクルがいまいち整合性が取れなかったりする。
そんな人のために、Vueにはvue-gapi - npmというライブラリがあるけど、CDNをVueのサイクルに自分で乗せてみたいと思ったので、やってみました。

どうやったんです

  • vue-plugin-load-scriptを導入する。
  • mountedcreatedCDNからスクリプトを読み込む。
    (読み込み後にDataの要素を使う場合はmounted)
  • GoogleSigninに必要なgapiに初期設定を行う
  • ボタンを描画する。

vue-plugin-load-scriptの導入

package.jsondependenciesに以下を追加

"vue-plugin-load-script": "^1.2.0"

そんで、npm install

CDNからスクリプトをロード

createdmountedで以下を実行

// Promiseを返すので、続けてgapiの初期化を書ける
this.$loadScript('https://apis.google.com/js/platform.js').then(() => {
  // gapiはvueインスタンス上にはないので、window関数から取得する必要がある。
  window.gapi.auth2.init(/* GoogleAPIより取得/設定した apikey, clientid, scopeを設定 */).then(() => {
    window.gapi.siginin2.render(/* 第一引数にレンダリング先のID、第二引数にボタンのサイズなどのプロパティ */);
  })
})

だいたいこんな感じ。

詳しい設定などは、

Integrating Google Sign-In into your web app をみてね!