2011-03-30 2 views
3

다음 JS 코드가 있습니다.Facebook Javascript, 사용자가 내 페이스 북 페이지의 팬인지 여부를 감지하는 방법? 내 사이트에있는 동안?

코드의 목적은 먼저 사용자에게 facebook id를 부여한 다음 FQL을 사용하여 해당 ID를 내 페이지 ID와 대조하여 사용자가 팬인지 확인하는 것입니다.

내가 겪고있는 문제는 코드가 실제로 작동하는 유일한 시간은 내 개인 페이스 북 프로필로 로그인하는 것입니다. 나는 내 프로필과 FB.init appid가 어떻게 든 연결되어 있기 때문에 그것을 생각하십니까?

누군가이 코드를 살펴보고 내가 잘못 가고있는 곳을 보여줄 수 있습니까?

나의 목표는 JS를 사용하여 먼저 사용자 ID (따라서 축소판 이미지)를 얻은 다음 내 자신의 페이스 북 페이지와 대조하여 그들이 팬인지 확인합니다. 그들이 facebook 팬인 경우에, 나는 그 (것)들에게 쿠폰 또는 무언가를 아마 줄 것이다.

미리 감사드립니다. 사용자가 없습니다 페이스 북에 .. 응용 프로그램에 연결되어있는 경우

<script src="http://connect.facebook.net/en_US/all.js"></script> 
//Connect to facebook with my app id.. 
FB.init({ 
    appId:'135445813195028', 
    cookie:false, 
    status:true, 
    xfbml:true 
}); 

//Check to see if user is actually CONNECTED??? 
FB.getLoginStatus(function(response) { 
    if (response.session) { 
     // USER IS CONNECTED 
     FB.api('/me', function(user) { 
      if (user != null) { 
       var image = document.getElementById('imagez'); 
       image.src = 'http://graph.facebook.com/' + user.id + '/picture?type=large'; 
       var name = document.getElementById('name'); 
       name.innerHTML = user.name; 
       FBID = user.id; 
       console.log('Facebook ID:' + FBID); 
       //assemble an FQL query to see if the guy is a fan of our page... 
       myquery = 'SELECT uid FROM page_fan WHERE page_id = 126923080686340 AND uid = ' + FBID; 
       console.log('query = ' + myquery); 
       ///Run FQL Query to see if user is a fan 
       FB.api({ 
        method: 'fql.query', 
        query: myquery 
       }, function(resp) { 
        if (resp.length) { 
         var IsFan = true; 
         alert('You are A fan!') 
         console.log('Visitor is a fan'); 
         //show coupon code... 
        } else { 
         alert('Signed into facebook, but Not a fan!'); 
         var IsFan = false; 
         console.log('Visitor is not a fan'); 
         //show like button... 
         //once like is clicked then refresh the page... 
        } 
       }); 
      //END Run FQL Query to see if user is a fan 
      } 
     }); 
     //Figure out if they are a fan... 
    } else { 
     // USER IS NOT CONNECTED 
     alert('NO USER session, user is not logged into facebook!!!'); 
    } 
}); 
+0

확실히 말할 수는 없지만 사용 권한 문제로 생각됩니다. 페이스 북은 권한없이 (예를 들어 앱을 통해) 사용자의 페이지를 확인할 수 없기를 원할 것이다. – n00dle

+2

잘하면 당신은 할 수 없습니다. 그것은 당신의 사업이 아닙니다. –

+0

FB에서 허용하는 경우 말할 수는 없지만 다른 사람이나 다른 시도에서 콘솔을 사용하도록 설정 했습니까? 그렇지 않으면'console.log' 명령이 실패하고 JS가 중지됩니다. –

답변

1

FB.getLoginStatus 체크를 확인합니다.

그러나 사용자가 응용 프로그램에 연결되어 있지 않을 때 .status 속성은 당신에게 (사용자가 전혀-로그인, 또는 당신의 응용 프로그램에 있지 않은 경우 )이 실패의 이유를 알 수 있습니다.

그래서 당신이 사용해야하는 구조는

FB.getLoginStatus(function(response) { 
     if(response.session) { 
      alert('connected to Application'); 
     } else { 
      // no user session available, someone you dont know 
      if(response.status == "notConnected") { 
       // But user is logged into facebook 
       alert("Not connected to Application, but is logged in to Facebook"); 
      } else { 
       // User is not logged into facebook 
        alert('Not logged in to facebook'); 
      } 
     } 
    }); 

입니다하지만 당신은 당신의 응용 프로그램을 인증되지 않은 사용자의 ID에 액세스 할 수 없습니다.
Javascript API를 통해 연결되지 않습니다.

+0

알기 쉽게 사용자가 내 앱을 승인했는지 확인해야합니다. userID가 공유됩니다. 대중에게 공개해야하는 것처럼 보이지만, 왜 그 사람들이 보지 못하는지 알 수 있습니다. – user684844

관련 문제