2015-10-28 57 views
0

我在使用Google+登錄時遇到了一個奇怪的問題。我使用的代碼與他們在開發者網站上發佈的內容非常接近。問題Google+在Chrome上登錄

我的代碼

<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

我一直在努力解決這個問題幾個月和關閉。有時它起作用,有時不起作用。

當我對某件事情感到沮喪時,最終我只是在我能想到的任何地方拋出一個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() { 
    ... 

也許initClient沒有被當API準備啓動它創建。所以我換了位置。我在的聲明之後撥打了API 。低,看,它的工作!

經過了幾個月,我發現自己試圖從別人那裏汲取一些想法,最終發現了它。

唉。我不敢相信我沒有早點弄清楚。