在Chrome上发出Google+登录信息

时间:2015-10-28 06:58:53

标签: javascript google-chrome google-signin

我在使用Google+ Signin时遇到了一个奇怪的问题。我将这些代码与他们在开发者网站上发布的内容非常接近。

我的代码

<script type="text/javascript">
var auth2;


var initClient = function() {
    gapi.load('auth2', function() {
        auth2 = gapi.auth2.init({
            client_id: 'MYCLIENTIDHERE.apps.googleusercontent.com',
            cookiepolicy: 'single_host_origin',
            scope: 'profile'
        });

        jQuery('#signin-button').unbind();
        auth2.attachClickHandler('signin-button', {}, onSuccess, onFailure);
    });
};


var onSuccess = function(user) {
    console.log('Signed in as ' + user.getBasicProfile().getName());

    do_all_my_other_stuff_not_important_for_here();
};

var onFailure = function(error) {
    console.log(error);
};
</script>

行为

点击Chrome中的#singin-button时,大部分时间似乎都没有发生。如果在另一个浏览器中,如Firefox,它可以按预期工作。

我很确定我的代码中没有其他内容可以解决这个问题,因为当我在本地计算机上运行相同的源代码时,它也可以按预期工作(无论浏览器如何)。

问题

我真的不知道哪里甚至可以开始进一步诊断这个问题。你会怎么做?关于在哪里寻找可能的解决方案的想法将受到欢迎。

1 个答案:

答案 0 :(得分:0)

我几个月来一直在努力解决这个问题。有时候它有效,有时候不行。

当我对某些事情感到沮丧时,我最终只会在我想到的任何地方抛出一个console.log,然后看看是什么火灾以及何时发生。

很低,我发现initClient没有被触发。嗯...

Google API的onload参数出错。

我的代码是这样的:

<script type="text/javascript" src="https://apis.google.com/js/platform.js?onload=initClient" async defer></script>

<script type="text/javascript">
var auth2;

var initClient = function() {
    ...

当api准备启动它时,也许没有创建initClient。所以我换了位置。我在声明 之后调用了API 。低,看,它有效!

几个月之后,就在我试图向其他人征求一些想法的那一天,我终于弄明白了。

唉。我简直不敢相信我没有早点解决这个问题。