2011-09-03 3 views
0

후 jQuery를 아약스 호출을 처리하지 않습니다페이스 북에 연결 내가 다음 스크립트를 가지고 성공적으로 로그인

링크를 클릭
<a href="#" id="fb-button">Login with facebook</a> 
    <div id="fb-root"></div> 

, 팝업 :

<script> 
     window.fbAsyncInit = function() { 
      FB.init({ appId: '<%: Facebook.FacebookApplication.Current.AppId %>', 
       status: true, 
       cookie: true, 
       xfbml: true, 
       oauth: true 
      }); 

      function FBLogin() { 
       FB.login(function (response) { 
        if (response.authResponse) {        
         ConnectFacebookUser(response.authResponse.accessToken); 
        } else { 
         alert('User cancelled login or did not fully authorize.'); 
        } 
       }, { scope: 'email' }); 
      } 

      $('#fb-button').live('click', function (e) { 
       FBLogin(); 

       e.preventDefault(); 
      }); 

      function ConnectFacebookUser(at) { 
       var postdata = "at=" + at; 
       alert('This is the access token : ' + at); 

       $.ajax({ 
        type: "POST", 
        dataType: "json", // what data type to expect from the server 
        url: "/FBConnect.ashx", 
        data: postdata, 
        success: function (data) { 
         // do nothing 
         alert('all good'); 
        }, 
        error: function (xhr, status, error) { 
         alert('error occured in FBConnect.ashx'); 
        } 
       }); 

       alert('finished'); 
      } 
     }; 

     (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); 
     }()); 

    </script> 

그리고 HTML 조각에 대한

페이스 북을위한 창이 나타나고 로그인 정보를 입력하면 "이것은 액세스 토큰입니다 ..."라고 말하지만 나머지 코드는 처리되지 않습니다. "페이스 북으로 로그인"링크를 한 번 더 클릭하면 모든 것이 정상적으로 처리됩니다.

무엇이 문제 일 수 있습니까?

답변

1

나를 위해 작동합니다. 나는 'this is the acccess code'라는 메시지를 받았고, 그 다음에 'finished'경고음을 받는다. 자동으로 발생할 수있는 스크립트 오류를 ​​찾기 위해 Chrome 디버거 도구를 확인하십시오.

+0

머리를 주셔서 감사합니다. 문제를 일으킨 ajaxStart 함수가있는 js 파일이 없습니다. 모두 잘 작동합니다. – gices

1

https://github.com/xocialhost/jquery.xocialCore.js/blob/master/jquery.xocialCore.js을 확인하면이 작업을 수행하는 jQuery 고유의 방법을 확인할 수 있습니다. 한 가지 사실은 FB.login을 호출 할 때 jQuery 클릭 기능이 테스트중인 일부 브라우저에서 팝업 차단기를 트리거하고 있다는 것입니다. 이 문제를 해결하기 위해 이것을 설정했지만 초기화 시퀀스 중에 제대로 실행되는 콜백을 추가하는 방법이기도합니다.

+0

팝업 차단기에 아무런 문제가 없었지만 조사해 보겠습니다. 나는 당신이 준 링크를 확인했지만 그다지 도움이되지는 않았지만 어쨌든 당신의 답변에 감사드립니다. – gices

+0

또 다른 빠른 살펴 본 후 window.fbAsyncInit 함수 내에서 다른 함수 호출을 중첩하는 것과 관련이있을 수 있으므로 범위 문제 일 수 있습니다. –

+0

그 기능은 이전에는 없었지만, 나는 너무 많은 변화를 일으켜서 작동하게 만들었고, 여기에 넣기로 결정했을 때 나는 그대로 코드를 붙여 넣었다. 어쨌든 window.fbAsyncInit 함수 밖에서 모든 함수를 움직여도 문제가 해결되지 않았습니다. 한번 더 주셔서 감사합니다. – gices

관련 문제