2012-02-05 22 views
0

當點擊名爲「button2」的按鈕時,下面的代碼成功地觸發了FB.api()函數,但是我無法從名爲button 「button1」事件,雖然我已驗證該按鈕正在觸發它的點擊處理程序。如果有人能告訴我我做錯了什麼,我會很感激。無法觸發Facebook JavaScript SDK中的函數FB.api()

window.fbAsyncInit = function() {  
      FB.init({ appId: 'xxxxxxxxxxxxxxx', 
      status: true, 
      cookie: true, 
      xfbml: true, 
      oauth: true 
        }); 

     function updateButton(response) { 
      var button1 = document.getElementById('subbtn');; 
      var button2 = document.getElementById('fb-auth'); 

      button1.onclick = function(response){ 
      alert("Button1 Clicked"); 
      FB.api('/me', function(response) { 
       alert("FB.api Triggered"); 
              }); 
               }; 

      if (response.authResponse) { 
      //user is already logged in and connected 
      var userInfo = document.getElementById('user-info'); 
      FB.api('/me', function(response) { 
       userInfo.innerHTML = '<img src="https://graph.facebook.com/' + response.id + '/picture">' + response.name; 
       button2.innerHTML = 'Logout'; 
               });        
       button2.onclick = function() { 
       FB.logout(function(response) { 
        var userInfo = document.getElementById('user-info'); 
        userInfo.innerHTML=""; 
              }); 
              }; 
             } else { 
       //user is not connected to your app or logged out 
       button2.innerHTML = 'Login'; 
       button2.onclick = function() { 
       FB.login(function(response) { 
       if (response.authResponse) { 
        FB.api('/me', function(response) { 
         alert("FB.api triggered"); 
        var userInfo = document.getElementById('user-info'); 
        userInfo.innerHTML = '<img src="https://graph.facebook.com/' + response.id + '/picture" style="margin-right:5px"/>' + response.name; 
                });  
             } else { 
         //user cancelled login or did not grant authorization 
                } 
               }, {scope:'email'});  
               } 
               } 
               } 

      // run once with current status and whenever the status changes 
      FB.getLoginStatus(updateButton); 
      FB.Event.subscribe('auth.statusChange', updateButton); 
              }; 

      (function() { 
      var e = document.createElement('script'); e.async = true; 
      e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
      document.getElementById('fb-root').appendChild(e); 
         }()); 

回答

0

它看起來像兩個onclicks之間的區別是,您呼叫的FB.login您在BUTTON2 click事件調用FB.api之前,而不是在Button1的事件:

button1.onclick = function(response){ 
      alert("Button1 Clicked"); 
      FB.api('/me', function(response) { 

button2.onclick = function() { 
       FB.login(function(response) { 
       if (response.authResponse) { 
        FB.api('/me', function(response) { 

我猜如果你點擊button2然後button1,button1的處理程序工作?