我在使用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,它可以按预期工作。
我很确定我的代码中没有其他内容可以解决这个问题,因为当我在本地计算机上运行相同的源代码时,它也可以按预期工作(无论浏览器如何)。
问题
我真的不知道哪里甚至可以开始进一步诊断这个问题。你会怎么做?关于在哪里寻找可能的解决方案的想法将受到欢迎。
答案 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 。低,看,它有效!
几个月之后,就在我试图向其他人征求一些想法的那一天,我终于弄明白了。
唉。我简直不敢相信我没有早点解决这个问题。