我正在为我的网站使用 G+ 登录,但我发现了这个问题。
我的网站上有工具栏(使用 Javascript 渲染)和 G+ 登录按钮,所以我在工具栏文件中附加了 G+ Javascript API
[工具栏-notlogin.php]
<script>
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js?onload=render';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
function render ()
{
var config = {
"callback": "loginCallback",
"clientid": "xxxxxxxxx.apps.googleusercontent.com",
"cookiepolicy": "single_host_origin",
"requestvisibleactions": "http://schemas.google.com/AddActivity",
"scope": "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email"
};
$('#googleCustomLoginBtn .buttonText').text('Login with Google');
gapi.signin.render ("gplusLoginBtn", config);
}
</script>
当工具栏(带有 G+ JS API)加载时,它会调用回调函数 render() 来渲染 G+ 登录按钮。它工作得很好,所以我的工具栏变成了登录状态(显示用户的个人资料)和 G+ 登录按钮消失了(替换了 HTML)。
当用户注销时,工具栏将状态更改为未登录(再次替换 HTML),它再次调用 render() 并且登录按钮起作用。
但问题是,当我这次登录时,回调函数 (loginCallback())调用了两次。似乎回调函数再次绑定。(我尝试第二次不调用 render() 但登录按钮不起作用。)
有什么办法可以解决吗?谢谢你。