Heim  >  Fragen und Antworten  >  Hauptteil

Nach dem Aktualisieren der Seite verschwindet die neue Google-Anmeldeoption

Ich habe die von Google bereitgestellten Richtlinien befolgt, um das neue Google-Login zu integrieren. Ich habe den HTML-Code mit dem von Google bereitgestellten Codegenerator erstellt.

Den vollständigen Code habe ich hier angehängt

<svelte:head>
    <title>Home</title>
    <meta name="description" content="Svelte demo app" />
</svelte:head>

<section>
    <div class="h-screen">
        <div
            id="g_id_onload"
            data-client_id="534101779287-bm07dc8v4ln4kulqbql61nsglcku74vg.apps.googleusercontent.com"
            data-context="use"
            data-ux_mode="redirect"
            data-login_uri="http://localhost:5173/auth/callback"
        />
        <div class="bg-red-300 h-80">
            <div
                class="g_id_signin"
                data-type="standard"
                data-shape="rectangular"
                data-theme="outline"
                data-text="signin_with"
                data-size="medium"
                data-logo_alignment="left"
                data-width="180"
            />
        </div>
    </div>
</section>

Es funktioniert hervorragend, wenn Sie die Seite zum ersten Mal rendern.

Wenn wir die Seite mit Command+R aktualisieren oder auf das Neuladen-Symbol im Browser klicken, verschwindet die Schaltfläche Anmelden.

P粉506963842P粉506963842204 Tage vor421

Antworte allen(2)Ich werde antworten

  • P粉018548441

    P粉0185484412024-03-29 00:52:38

    现在我使用 Javascript 创建了组件,在这里我添加了答案。

    我在 app.d.ts 中将 google 声明为全局变量

    // See https://kit.svelte.dev/docs/types#app
        // for information about these interfaces
        declare global {
            const google: any;
            namespace App {
            }
        }
    export {};

    我创建了一个 svelte 文件来创建用于登录按钮的 svelte 组件

    let canvas: any; //Created a variable to optain a reference to rendered div element
        

    在 onMount 中

    onMount(async () => {   
        google.accounts.id.initialize({
                    client_id: "534101779287-bm07dc8v4ln4kulqbql61nsglcku74vg.apps.googleusercontent.com",
                    ux_mode: "redirect",
                    context: "use",
                    login_uri: "http://localhost:5173/auth/callback"
                });
                google.accounts.id.renderButton(canvas, {
                    width: '220',      
                    theme: 'outline',
                    size: 'large',
                    type: 'standard',
                    text: 'signin_with',
                    shape: 'rectangular',
                    logo_alignment: 'left',
                      
                });
    
        });

    此代码将在初始渲染、硬重新加载 (Command+shift+R) 和重新加载 (Command+R) 中工作

    Antwort
    0
  • P粉696146205

    P粉6961462052024-03-29 00:04:19

    使用 SvelteKit 时,硬重新加载是在服务器端呈现的。代码可能与此不兼容或者执行顺序错误。

    检查控制台是否有错误,并将必须在客户端上运行的代码移至 onMount< /a>.您还可以使用 ssr 页面选项 关闭特定页面的服务器端渲染作为最后的手段

    Antwort
    0
  • StornierenAntwort