길이 이야기(Giri's Story)
[소셜(SNS)댓글] facebook 연동 FAQ #2 - file_get_contents() 함수문제 본문
--------------------------------------------------------------------------------------------------------
요즘 소셜(SNS)댓글 시스템이 커뮤니티 사이트에서 관심을 받고 있습니다.
이전에 IT관련 회사들은 어떻게 하면 회원가입률을 높일까를 고민하다 이제는 어떻게 하면 커뮤니티를 활성화 시킬 수 있을까로 고민이 바뀌고 있죠. 말 그대로 좋은 정보를 제공하는 것도 중요하지만, 방문자의 호응을 쉽게 이끌어내기 위한 노력으로 SNS 댓글시스템이 각광을 받고 있지 않나 싶습니다.
각 SNS(트위터, 페이스북, 미투데이, 요즘 등) 서비스들의 로그인 API연동에 대한 FAQ를 정리해보도록 하겠습니다.
개발하실 분들은 참조해서 도움이 되셨으면 좋겠습니다.
--------------------------------------------------------------------------------------------------------
페이스북 개발자 계정신청하고 기본 api 호출문으로 호출시 발생되는 상황대처법이다.
file_get_contents() 함수문제
[ 아래는 facebook 에서 제공하는 기본 api호출문 알리고리즘 ]
<?php
$app_id = "YOUR_APP_ID";
$app_secret = "YOUR_APP_SECRET";
$my_url = "YOUR_URL";
session_start();
$code = $_REQUEST["code"];
if(empty($code)) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
. $_SESSION['state'];
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
if($_REQUEST['state'] == $_SESSION['state']) {
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret . "&code=" . $code;
$response = file_get_contents($token_url); // <--- file_get_contents 이 함수
$params = null;
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token="
. $params['access_token'];
$user = json_decode(file_get_contents($graph_url));
echo("Hello " . $user->name);
}
else {
echo("The state does not match. You may be a victim of CSRF.");
}
?>
Warning:
file_get_contents(https://graph.facebook.com/oauth/access_token?client_id=163002433768527&redirect_uri=http%3A%2F%2F211.242.255.46%3A81%2FAdmin%2FFtc_Manager%2FNew_Board%2Fview.php%3Fno%3D22%26cpage%3D1&client_secret=05f3f6baa5f3f5fa0985ea0d860cce53&code=Y4pqWCC_7Zsremr_dSHu7dzIWbfXBL91SnHDR4OvXVo.eyJpdiI6Im4tN2NfWnhNSGpGSlFXakNRSlp2RXcifQ.q26b7Al9E1PJWXlK02IzU0A7oTbQNduqUNXna6Ve7U5JCDxPnlSAY21c0GYDMQY_glFHu-rTw_PfqMHtr_SjkxxA8TLoIM35CZYtN2C_dvSSoTwJ1LjyJQGZ-eBtzAIl) [function.file-get-contents]:
file_get_contents 함수의 경우 보안상 서버설정에서 차단하는 경우가 많은데
이때는 하나의 기능을 위해 해당 함수를 풀지말고
socket 이나 curl 을 이용해 대처하면 된다.
<?
function http($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close ($ch);
return $response;
}
?>
위와같은 펑션을 추가하고 file_get_contents를 http()함수로 교체하면 해결~!
'IT기술,개발 > 웹프로그래밍' 카테고리의 다른 글
[소셜(SNS)댓글] 싸이월드-C로그 연동 FAQ (0) | 2011.11.17 |
---|---|
[소셜(SNS)댓글] 네이버 미투데이(me2day) 연동 FAQ (0) | 2011.11.17 |
[소셜(SNS)댓글] twitter 연동 FAQ (0) | 2011.11.17 |
[소셜(SNS)댓글] 다음 요즘(yozm) 연동 FAQ (0) | 2011.11.17 |
[소셜(SNS)댓글] facebook 연동 FAQ #1 - 페이스북 API 키 발급 (0) | 2011.11.17 |
[jQuery] 가시영역의 이미지만 로딩 - Lazy Load Plugin for jQuery (특정영역에만 적용가능) (0) | 2011.09.27 |
[Ajax] Microsoft.XMLHTTP(Ajax) - 서버 실시간 모니터링 (0) | 2011.09.27 |
[MYSQL] mysql data type (DB 데이터 타입) (0) | 2011.09.27 |
[Linux] 아파치 웹로그분석툴 webalizer 설치 (0) | 2011.03.31 |
crontab(cronjob) 스케쥴, php관리툴 응용제어 (0) | 2011.03.23 |