Estoy tratando de seguir Google Drive y estoy usando esta guía: https://developers.google.com/drive/api/v3/quickstart/js
Pero quiero implementarlo en Svelte, pero tengo un problema.
<script async defer src="https://apis.google.com/js/api.js" onload="this.onload=function(){};handleClientLoad()" onreadystatechange="if (this.readyState === 'complete') this.onload()"> </script>
¿Cómo uso este código en Svelte?
Lo tengo trabajando con algo como esto:
<script> import { googleClient } from '$services/google-service' function handleClientLoad() { gapi.load('client:auth2', googleClient) } </script> <svelte:head> <script async defer src="https://apis.google.com/js/api.js" on:load={handleClientLoad}></script> </svelte:head>
servicio de google:
import { setCurrentUser } from './auth-service' const SCOPES = 'https://www.googleapis.com/auth/fitness.activity.read https://www.googleapis.com/auth/fitness.activity.write https://www.googleapis.com/auth/fitness.nutrition.read https://www.googleapis.com/auth/fitness.nutrition.write' export async function googleClient() { await gapi.client.init({ apiKey: import.meta.env.VITE_GOOGLE_API_KEY as string, clientId: import.meta.env.VITE_GOOGLE_CLIENT_ID as string, scope: SCOPES }) setCurrentUser(gapi.auth2.getAuthInstance().isSignedIn.get()) // Listen for sign-in state changes. gapi.auth2.getAuthInstance().isSignedIn.listen((e) => setCurrentUser(e)) }
servicio de autenticación:
import { writable } from 'svelte/store' export interface User { email: string name: string imageUrl: string } export const currentUser = writable<User>() export function handelAuthIn() { gapi.auth2.getAuthInstance().signIn() } export function handleSignOut() { gapi.auth2.getAuthInstance().signOut() } export function setCurrentUser(isSignedIn: boolean) { if (isSignedIn) { const profile = gapi.auth2.getAuthInstance().currentUser.get().getBasicProfile() currentUser.set({ email: profile.getEmail(), name: profile.getName(), imageUrl: profile.getImageUrl() }) } else { currentUser.set(undefined) } }