본문 바로가기
FaceBook

FACEBOOK FQL(Facebook Query Language)를 사용한 팬페이지 LIKE(좋아요) 체크

by eqzero 2011. 6. 29.
요즘 페이스북에 팬페이지를 개설후 많은 이벤트와 홍보 페이지를 작성하고있다.
자연스레 페북의 API를 많이 사용하게 되는데 사용하면 할수록 편하게 잘 만들어놨다는 생각이 든다.
간단한 플러그인부터 FQL, GRAPHI API 등..덕분에 공부할건 더 늘어나는데..;;;

페북 관련 글은 처음 남기는데.. 순서대로라면 뭔가 페북의 사용법과 OAuth부터 시작해야 되겟지만.ㅡㅡa..
일단 내가  얼마전 처리한부분부터 글을 남겨야겠다..;;
얼마전에 팬페이지에 이벤트를 하나 개설했는데 사용자의 like 여부를 체크후에 응모 가능을 판단해달라는 요구사항이 있었다.

페북에선 아래방법으로 팬페이지 "좋아요" 체크기능을 제공해준다.
1. REST API 의 page.isFan
2. FB.api의 pages.isFan 메소드
3. FQL을 통한 page_fan 테이블 조회.

아래 설명한 내용은  위의 3번을 토대로 작성한것이다.
우선 먼저 해야할 작업으론 페북에 APP를 생성해야한다. [개설하기
이 생성된 APP를 통해 사용자의 정보를 조회할수 있다.
<body>
	<DIV id=fb-root></DIV>
	<SPAN id=status>	
	<SCRIPT src="http://connect.facebook.net/ko_KR/all.js#xfbml=1">    
	<SCRIPT type=text/javascript>	
		FB.init({		
			appId  : '새로 개설한 APP ID',		
			status : true, // check login status		
			cookie : true, // enable cookies to allow the server to access the session	
			xfbml  : true  // parse XFBML	
		});	
		// 회원 로그인 상태체크.	
		FB.getLoginStatus(handleSessionResponse);	
		
		// like 이벤트가 발생할때 호출된다.	
		FB.Event.subscribe('edge.create', function(response) {		
			document.getElementById("status").innerHTML = "LIKE!!!!";
		});		
		
		// unlike 이벤트가 발생할때 호출된다.	
		FB.Event.subscribe('edge.remove', function(response) {		
			document.getElementById("status").innerHTML = "UNLIKE!!!!";	
		});			
		
		function handleSessionResponse(response) {		
			// 로그인하지 않았다면 로그인 유도		
			if (!response.session) {		  			
				alert("페북 로그인을 해주세요~!");			
				FB.login(handleSessionResponse);			
				return;		
			}            
			
			//FQL를 사용 page_fan테이블을 조회하여 현재 사용자의 LIKE 명단에 있는지 조회한다. 
			// page_id 는 팬페이지의 고유ID..	    
			FB.api (			
				{				
					method: 'fql.query',				
					query: "SELECT uid, page_id, type FROM page_fan "+                       
						"WHERE page_id = ???????????? AND uid= "+FB.getSession().uid		
				},	
	
				function(response) {                                
					//LIKE 한 사용자가 아니라면 response.length 는 "0"을 반환한다.				
					if( response.length ) {					
						document.getElementById("status").innerHTML = "LIKE!!!!";			
					} else { 					
						document.getElementById("status").innerHTML = "UNLIKE!!!!";
					}			
				}		
			);	
		}    	
	</SCRIPT>
	<fb:like layout="button_count" send="false" href="http://cspark.net"></fb:like>
</body>

이외에도 FQL을 통해서 각 데이터 테이블을 조회한다면 좀더 쉽게 페북의 데이터들을 조회할수 있다.
참고 : FQL API http://developers.facebook.com/docs/reference/fql/