如何将 Google Identity Services JavaScript SDK 与 Vue / TypeScript 一起使用?

How to use Google Identity Services JavaScript SDK with Vue / TypeScript?

我正在尝试在我的 Vue/Quasar/TypeScript 应用程序中使用新的 Google 身份服务 JavaScript SDK 授权一些 Google API。

作为 per the docs 我已经在 index.template.HTML 文件的 header 中加载了 Google 3P 授权 JavaScript 库,如下所示:

<script src="https://accounts.google.com/gsi/client" onload="console.log('TODO: add onload function')">  
</script>

现在在 Vue 组件中我有这个:

<template>
  <v-btn
    class="q-ma-md"
    design="alpha"
    label="Connect Google Calendar"
    @click="handleGoogleCalendarConnect"
  />
</template>

<script setup lang="ts">
import VBtn from 'src/components/VBtn.vue';

const client = google.accounts.oauth2.initCodeClient({ // <-- TypeScript Error Here
  client_id:
    'MY_CLIENT_API_KEY_GOES_HERE',
  scope: 'https://www.googleapis.com/auth/calendar.readonly',
  ux_mode: 'popup',
  callback: (response: any) => {
    const xhr = new XMLHttpRequest();
    xhr.open('POST', code_receiver_uri, true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    // Set custom header for CRSF
    xhr.setRequestHeader('X-Requested-With', 'XmlHttpRequest');
    xhr.onload = function () {
      console.log('Auth code response: ' + xhr.responseText);
    };
    xhr.send('code=' + code);
  },
});

const handleGoogleCalendarConnect = () => {
  client.requestCode();
};
</script>

但是我在“google”上收到一个 TypeScript 错误,上面写着:Cannot find name 'google'. ts(2304)

可能是因为我缺少 Google 身份服务 JavaScript SDK 的类型?如果有,在哪里可以找到它们?

或者是其他问题?

找到正确类型的包:

npm i @types/google.accounts

这消除了错误。