FaceBook

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

eqzero 2011. 6. 29. 02:23
요즘 페이스북에 팬페이지를 개설후 많은 이벤트와 홍보 페이지를 작성하고있다.
자연스레 페북의 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/