모바일 앱 서버에서 페이스북 그래프 API를 사용해 사용자 인증하기

| 2014. 10. 13. 22:10

굳이 모바일 앱 서버로 분야를 한정 지을 필요야 있겠냐마는 나 스스로가 모바일 앱과 관련해 제대로 된 검색 결과를 얻기가 힘들었기 때문에 제목에 붙여본다. 사실 굉장히 간단한 코드다. 비록 수 개월만 지나면 서버 작업에서 완전히 손을 놓게 되겠지만 개인 프로젝트를 하든 어쩌든 언젠가는 다시 써먹을 일이 있을 것이라 생각한다. 물론 페이스북 그래프 API의 구조가 바뀌거나, 더 심하게 말해 페이스북 서비스가 없어지게 되면 말짱도루묵이지만.

PHP를 기준으로 작성된 코드다. 클라이언트로부터 필요한 것은 access_token이 전부다.

$token = '';
$url = "https://graph.facebook.com/me?locale=ko_KR&access_token=$token";
$options = array(
	'http' => array(
		'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
		'method'  => 'GET'
	)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);

locale=ko_KR 옵션은 물론 옵션이다. 두 가지 중요한 점은 사실상 서버에서는 앱에 대한 다른 정보, 예를 들어 앱 아이디나 앱 시크릿을 저장할 필요가 전혀 없다는 것과 POST 옵션으로 요청하면 토큰이 옳은 값인지 아닌지만 리턴한다는 것이다. 왜 이 몇 줄 안 되는 코드를 누군가 짜놨을 거라 생각하고 그렇게나 열심히 검색을 하고 다녔던 걸까.

스택오버플로우의 두 포스트를 참고했다. "use facebook iOS client authorization on own to server", "How do I send a POST request with PHP?"

이제 이 코드는 내꼬양.