Javascript HTML PHP谷歌单点登录注销将抛出;无法读取属性';getAuthInstance';“未定义”的定义;
我已经按照中提到的步骤创建了google单点登录 登录就像一种魅力,但当我试图按照链接中的文章整合注销时 我在控制台中遇到以下javascript错误 未捕获的TypeError:无法读取的属性“getAuthInstance” 未定义 我的注销函数看起来像Javascript HTML PHP谷歌单点登录注销将抛出;无法读取属性';getAuthInstance';“未定义”的定义;,javascript,php,html,single-sign-on,Javascript,Php,Html,Single Sign On,我已经按照中提到的步骤创建了google单点登录 登录就像一种魅力,但当我试图按照链接中的文章整合注销时 我在控制台中遇到以下javascript错误 未捕获的TypeError:无法读取的属性“getAuthInstance” 未定义 我的注销函数看起来像 <script> function signOut() { var auth2 = gapi.auth2.getAuthInstance(); auth2.signOut().then(fu
<script>
function signOut() {
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut().then(function () {
console.log('User signed out.');
});
}
</script>
登录和注销是否在同一页上使用? Div g-signin2加载并初始化gapi.auth2,因此只要它们在同一页上,它就应该工作 若注销位于单独的页面上,则应手动加载并初始化gapi.auth2库 完整示例(您必须用实际的客户ID替换您的客户ID):
函数签出(){
var auth2=gapi.auth2.getAuthInstance();
auth2.signOut().then(函数(){
log('User signed out');
});
}
函数onLoad(){
load('auth2',function(){
gapi.auth2.init();
});
}
检查:
特别是这一部分:
gapi.auth2.getAuthInstance()
返回GoogleAuth对象。您必须初始化GoogleAuth
在调用此方法之前,使用gapi.auth2.init()
创建一个对象
对我来说,问题是我没有首先调用gapi.auth2.init()我也遇到了同样的问题,似乎我找到了解决方案,我认为应该是这样 您应该像我一样在脚本的底部有这样的方法调用,如下所示:
gapi.load("client", initAuth);
这应该像这样修改
gapi.load("client:auth2", initAuth);
这应该是可行的(至少对我来说是可行的)。最简单的方法是添加?onload=onload,这样您的api脚本就可以
<script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script>
<script>
function signOut() {
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut().then(function () {
console.log('User signed out.');
});
}
function onLoad() {
gapi.load('auth2', function() {
gapi.auth2.init();
});
}
</script>
函数签出(){
var auth2=gapi.auth2.getAuthInstance();
auth2.signOut().then(函数(){
log('User signed out');
});
}
函数onLoad(){
load('auth2',function(){
gapi.auth2.init();
});
}
非常感谢,先生,现在我可以处理了。只需将我的签出逻辑放入gapi.auth2.init()。然后(()=>{/*signout stuff here*/})
这应该被接受为一个答案。还有一点:如果您使用angular、jquery或其他第三方框架,请确保onLoad()
函数运行。如果不是这样,那么您的注销将不起作用。非常感谢您,先生
gapi.load("client:auth2", initAuth);
<script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script>
<script>
function signOut() {
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut().then(function () {
console.log('User signed out.');
});
}
function onLoad() {
gapi.load('auth2', function() {
gapi.auth2.init();
});
}
</script>