vue 2 [GSI_LOGGER]: 'callback' 的值不是一个函数。配置被忽略
vue 2 [GSI_LOGGER]: The value of 'callback' is not a function. Configuration ignored
我试图在我的 Vue2 项目中放置一个 google 登录按钮,所以我尝试按照此处的说明进行操作 https://developers.google.com/identity/gsi/web/guides/display-button#html
所以我将下面的代码放入我的 Hello.vue
组件
<template>
<section>
<div id="g_id_onload"
data-client_id="YOUR_GOOGLE_CLIENT_ID"
data-callback=myCallbackFunction
data-auto_prompt="false">
</div>
<div class="g_id_signin"
data-type="standard"
data-size="large"
data-theme="outline"
data-text="sign_in_with"
data-shape="rectangular"
data-logo_alignment="left">
</div>
</section>
</template>
<script>
export default {
methods: {
myCallbackFunction(){
}
}
}
</script>
当我重新加载 page/component 时,它会显示错误 [GSI_LOGGER]: The value of 'callback' is not a function. Configuration ignored.
我认为问题是 data-callback
无法找到或识别我已经在 methods
下声明的 myCallbackFunction
。我也尝试将 myCallbackFunction
放在 computed
下,但它仍然 return 同样的错误。那么,有什么方法可以让这项工作成功吗?
好的,我想我明白了——但是我从使用 HTML 文档切换到 JavaScript 文档,因为 VueJS 更适合这个。
不过,我不知道安装是否是 最佳 选项,但它至少按预期工作。
只需使用在方法中创建的回调函数即可。
mounted: function () {
google.accounts.id.initialize({
client_id:
'xxxxxxx.apps.googleusercontent.com',
callback: this.handleCredentialResponse,
})
google.accounts.id.prompt()}
使用globalThis.yourcallbackfunction
在 Vue 2 中为我工作
<template>
<div>
<div id="signin_button"></div>
</div>
</template>
<script>
export default {
components: {
},
methods: {
handleCredentialResponse(response) {
console.log(response);
}
},
mounted: function () {
let googleScript = document.createElement('script');
googleScript.src = 'https://accounts.google.com/gsi/client';
document.head.appendChild(googleScript);
window.addEventListener('load', () => {
console.log(window.google);
window.google.accounts.id.initialize({
client_id: "xxxxxxx.apps.googleusercontent.com",
callback: this.handleCredentialResponse
});
window.google.accounts.id.renderButton(
document.getElementById("signin_button"),
{ theme: "outline", size: "large" } // customization attributes
);
})
}
}
</script>
我试图在我的 Vue2 项目中放置一个 google 登录按钮,所以我尝试按照此处的说明进行操作 https://developers.google.com/identity/gsi/web/guides/display-button#html
所以我将下面的代码放入我的 Hello.vue
组件
<template>
<section>
<div id="g_id_onload"
data-client_id="YOUR_GOOGLE_CLIENT_ID"
data-callback=myCallbackFunction
data-auto_prompt="false">
</div>
<div class="g_id_signin"
data-type="standard"
data-size="large"
data-theme="outline"
data-text="sign_in_with"
data-shape="rectangular"
data-logo_alignment="left">
</div>
</section>
</template>
<script>
export default {
methods: {
myCallbackFunction(){
}
}
}
</script>
当我重新加载 page/component 时,它会显示错误 [GSI_LOGGER]: The value of 'callback' is not a function. Configuration ignored.
我认为问题是 data-callback
无法找到或识别我已经在 methods
下声明的 myCallbackFunction
。我也尝试将 myCallbackFunction
放在 computed
下,但它仍然 return 同样的错误。那么,有什么方法可以让这项工作成功吗?
好的,我想我明白了——但是我从使用 HTML 文档切换到 JavaScript 文档,因为 VueJS 更适合这个。
不过,我不知道安装是否是 最佳 选项,但它至少按预期工作。
只需使用在方法中创建的回调函数即可。
mounted: function () {
google.accounts.id.initialize({
client_id:
'xxxxxxx.apps.googleusercontent.com',
callback: this.handleCredentialResponse,
})
google.accounts.id.prompt()}
使用globalThis.yourcallbackfunction
在 Vue 2 中为我工作
<template>
<div>
<div id="signin_button"></div>
</div>
</template>
<script>
export default {
components: {
},
methods: {
handleCredentialResponse(response) {
console.log(response);
}
},
mounted: function () {
let googleScript = document.createElement('script');
googleScript.src = 'https://accounts.google.com/gsi/client';
document.head.appendChild(googleScript);
window.addEventListener('load', () => {
console.log(window.google);
window.google.accounts.id.initialize({
client_id: "xxxxxxx.apps.googleusercontent.com",
callback: this.handleCredentialResponse
});
window.google.accounts.id.renderButton(
document.getElementById("signin_button"),
{ theme: "outline", size: "large" } // customization attributes
);
})
}
}
</script>