2012-01-10 1 views
0

현재 작업하고있는 웹 사이트에 Facebook Connect 기능을 구현하려고합니다. 이 사이트는 ASP.NET을 사용합니다.이 페이지는 기존 페이지 (로그인 페이지 포함)와 Ajax Control Toolkit (일부 컨트롤)을 래핑합니다. 페이 스북 설명서에 나와있는대로 JavaScript SDK 함수를 사용하고 있습니다. 가 여기에 페이스 북의 API를 호출하는 코드입니다 :ASP.NET Facebook Connect 연결 : 객체 [객체 DOMWindow]의 'open'속성이 함수가 아닙니다.

`<div id="fb-root"> 
</div> 
<script type="text/javascript"> 
    (function (d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) return; 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=APP_ID"; 
     fjs.parentNode.insertBefore(js, fjs); 
    } (document, 'script', 'facebook-jssdk')); 
</script>` 

그리고 여기에 익명의 자바 스크립트 기능을 페이스 북 로그인에 사용자에게 진입 점을 제공하는 코드입니다 :

<input type="button" 
    onclick=" FB.login(function(response) { 
          if (response.authResponse) { 
           console.log('Welcome! Fetching your information.... '); 
           FB.api('/me', function(response) { 
            console.log('Good to see you, ' + response.name + '.'); 
            FB.logout(function(response) { 
             console.log('Logged out.'); 
            }); 
           }); 
          } 
          else { 
           console.log('User cancelled login or did not fully authorize.'); 
         } 
       }, {scope: 'email'});" value="Login Facebook" /> 

문제는 내가 얻을 수 있다는 것입니다 window.open은 함수가 아니라 객체의 속성이며 Facebook 로그인 대화 상자가 나타나지 않는다는 예외입니다 (정확한 예외 메시지는 제목과 동일합니다). 나는이 오류가 어디에서 유래했는지 이해하지 못한다. 나는 하루 동안이 문제를 다루어 왔고 이제는 그것을 해결하는 데 필사적이다. 문제의 원인을 찾는 방법이 있습니까? 좀 도와 줄 수있어?

미리 감사드립니다.

참고 : 이상한 점은 마스터 페이지를 사용하지 않고 새 페이지를 만들고 모든 Facebook 호출을 새 페이지로 마이그레이션 할 때 작동한다는 것입니다.

답변

3

감사합니다. 다행히 문제를 해결할 시간을 좀 더 확보 할 수 있었고이 오류의 원인을 발견했습니다. 다른 개발자가 "var"키워드를 사용하지 않고 포함 된 JavaScript 파일 중 하나에서 변수 open = false;을 선언했습니다. 따라서 기존 "window.open"함수를 무시하고 제대로 작동하지 못하게합니다. 내가해야 할 일은 선언을 var open = false;으로 바꾸는 것뿐이었습니다. 나는 그것을 빨리 깨닫지도 못했고, JavaScript는 개발자들이 그러한 실수를 저 지르지 못하도록 막아 놓은 것도 아니다. 그래서 나를이 혼란에 이르게했다.

+0

좋은 찾기 !!! 나는 그 문제에 직면했을 때만 상상할 수있었습니다. – DMCS

0

JS SDK 로딩 코드에 appId가 지정되지 않았습니다. 숨겨진 그대로 교체해야한다는 것을 간과하기 쉽습니다. 질문에서 살펴 보았다 모든 사람에게

js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=APP_ID";

+0

답을 고맙다. 사실, 나는 그것을 알고있다. 내 질문에 응용 프로그램 ID를 공개하고 싶지 않았습니다. – Kerem

+0

앱 ID는 공개 지식입니다. 그들을 숨길 필요가 없습니다. API 키? 예, 절대 코드를 공개하거나 코드에 저장하지 마십시오. – DMCS