我正在将Google+ JS API与我的网站集成,并且遇到了一个奇怪的问题。按下我的登录按钮后,我将其调用以下功能:
function googlePlusLogin() {
console.log("inside googlePlusLogin()");
gapi.auth.signIn({
'clientid' : '[id]',
'cookiepolicy' : 'single_host_origin',
'scope' : 'profile email',
'callback' : function() {console.log('test');}
});
}
第一次单击按钮时,控制台输出为:
inside googlePlusLogin()
test
正如所料。但是,每次额外的时间我点击按钮(触发上述功能)的次数test
打印出增量。因此,例如,第二次单击按钮时输出为:
inside googlePlusLogin()
test
test
第三次单击按钮时,输出为:
inside googlePlusLogin()
test
test
test
等等..
导致此行为的原因是什么?
注意:我将其标记为JavaScript
,因为我认为这可能是一个基本的JS概念,我不理解。
答案 0 :(得分:0)
相当陈旧,但我遇到了同样的问题,所以将来参考:
似乎每次调用gapi.auth.signIn
时,“回调”功能都会添加到某些回调列表中。因此,仅在您第一次调用gapi.auth.signIn
时设置回调参数,例如
function googlePlusLogin() {
console.log("inside googlePlusLogin()");
if(window.__callback_initialized) {
gapi.auth.signIn({
'clientid' : '[id]',
'cookiepolicy' : 'single_host_origin',
'scope' : 'profile email'
});
} else {
gapi.auth.signIn({
'clientid' : '[id]',
'cookiepolicy' : 'single_host_origin',
'scope' : 'profile email',
'callback' : function() {console.log('test');}
});
window.__callback_initialized = true;
}
}
模拟DRY违规行为。