相关疑难解决方法(0)

谷歌登录击中两次?

我正在通过JS使用谷歌登录,看来我的代码获取数据两次.我不确定为什么会这样.

当我点击"使用Google登录"按钮时,它会向用户吐出(console.log(result))数据.然后出现提示,要求我选择我的帐户(我登录了几个谷歌帐户).当我点击我想要的帐户时,代码会再次吐出该用户数据.

为什么会这样?这是一个问题,因为在我吐出数据的地方,我想做一个ajax调用来验证用户,然后重定向它们.所以从本质上说,它试图这样做两次 - 这并不酷,如果我不想使用凭据登录google在第一次转发时回传?

(function() {
   var po = document.createElement('script');
   po.type = 'text/javascript'; po.async = true;
   po.src = 'https://apis.google.com/js/client:plusone.js';
   var s = document.getElementsByTagName('script')[0];
   s.parentNode.insertBefore(po, s);
 })();

function googleLogin() {
    var additionalParams = {
        'callback': googleCallback
    };

    gapi.auth.signIn(additionalParams);
}

function googleCallback(authResult) {
    if (authResult['status']['signed_in']) {
        gapi.client.load('oauth2', 'v2', function() {
            gapi.client.oauth2.userinfo.get().execute(function(resp) {
                console.log(resp);
            })
        });
    } else {
        console.log('Sign-in state: ' + authResult['error']);
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:如果我退出所有Google帐户(除了一个且只有一个),谷歌的调用仍然是重复的.这次它登录,我看到console.log()两次输出数据.访问令牌是相同的.

更新2: console.log(resp)输出两次

更新3:更多说明:

萤火虫

javascript google-api google-authentication google-api-client google-oauth

16
推荐指数
1
解决办法
4724
查看次数

G +登录按钮回调绑定两次

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

当工具栏(带有G + JS API)加载时,它调用回调函数render()来渲染G +登录按钮.它工作得非常好,所以我的工具栏变为登录状态(显示用户的个人资料)和G +登录按钮消失(HTML替换).

当用户注销工具栏更改状态以不登录(再次替换HTML)时,它再次调用render()并且登录按钮工作.

但问题是当我这次签到回调函数(loginCallback())两次调用时.似乎回调函数再次绑定.(我尝试不再在第二次调用render(),但登录按钮不起作用.)

有没有办法解决它?谢谢.

javascript google-plus

7
推荐指数
1
解决办法
961
查看次数