如何将 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
这消除了错误。
我正在尝试在我的 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
这消除了错误。