회사에서 필요할 것 같아 만들었는데 다른 방식으로 함.
혹시 누군가에게 도움될까 해서? 공개로 전환함.
# json 으로 뽑아오기 https:// GET 만 가능
$limit = 250; # 한번에 가져올 갯수 (limit 250개)
$pageId = 'page id'; # 페북페이지 아이디 (me/accounts/ 해서 나옴) - 페이지가 아니라면 me/로 바꿈
$accessToken = 'access token';
$host = 'graph.facebook.com';
$path = '/'.$pageId.'/posts?limit='.$limit.'&access_token='.$accessToken;
$linebreak = "\r\n";
$data = '';
$req = '';
$req .= 'GET ' . $path . ' HTTP/1.1' . $linebreak;
$req .= 'Host: ' . $host . $linebreak;
#$req .= 'Content-Type: application/json'.$linebreak;
$req .= 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)' . $linebreak;
$req .= 'Connection: Close' . $linebreak . $linebreak;
// Socket Open
$fsock = @fsockopen('ssl://'.$host, '443', $errmsg);
if ($fsock)
{
fwrite($fsock, $req);
while(!feof($fsock)) { $data .= fgets($fsock, 128); }
fclose($fsock);
}else exit($errmsg);
$data = json_decode(trim(preg_replace('/^(.*)\r\n/m','',$data)));
$dt = $data->data;
if(count($dt)<=0) return false;
# like 수로 모우기
$json = array();
$i = 0;
foreach($dt as $values){
if($i>=20) continue; # 20개만 저장
$fbPrivacy = $values->privacy->value; # EVERYONE
$fbCaption = $values->caption; # 홈페이지에서 share 한건 해당 홈페이지 host가 나옴
# 전체공개된것과 홈피에서 보낸것만
if(strcmp($fbPrivacy,'EVERYONE')<>0 || strcmp($fbCaption,'홈피주소')<>0) continue;
$fbId = $values->id;
$fbName = $values->name; # 기사 제목
$fbDescription = $values->description; # 기사 요약문
$fbImg = $values->picture;
$fbVideo = $values->source; # video
$fbLink = $values->link;
$fbCreateTime = strtotime($values->created_time);
$fbLParse = parse_str($fbLink, $fbLout);
$fbLIdxno = $fbLout['idxno']; # 기사 idxno
# 기사 idxno가 없다면 통과
if(empty($fbLIdxno)) continue;
$fbMessage = $values->message; # 작성자 설명글
$fbAction = $values->actions[1]->link; # 좋아요 용 링크
$fbLikes = $values->likes->data; # 좋아요
$fbLcount = count($fbLikes);
$fbLArr = array();
if($fbLcount>0){
foreach($fbLikes as $fbL){
$fbLId = $fbL->id;
$fbLName = $fbL->name;
if(!empty($fbLId)) array_push($fbLArr, array('id'=>$fbLId, 'name'=>$fbLName));
}
} # end fbLikes
$fbComments = $values->comments->data; # 댓글
$fbccount = count($fbComments);
$fbcArr = array();
if($fbccount>0){
foreach($fbComments as $fbC){
$fbCId = $fbC->from->id;
$fbCName = $fbC->from->name;
if(!empty($fbCId)) array_push($fbcArr, array('id'=>$fbCId, 'name'=>$fbCName));
}
} # end fbComments
$json[$fbLcount][]=array(
'fb_id'=>$fbId,
'idxno'=>$fbLIdxno,
'title'=>$fbName,
'summary'=>$fbDescription,
'default_img'=>$fbImg,
'video'=>$fbVideo,
'own_descript'=>$fbMessage,
'like_link'=>$fbAction,
'likes'=>array('count'=>$fbLcount, 'data'=>$fbLArr),
'comments'=>array('count'=>$fbccount, 'data'=>$fbcArr),
'reg_date'=>$fbCreateTime
);
$i++;
} #end foreach
if(count($json)<=0) return false;
krsort($json); # 좋아요 많은 순으로 재정렬
# 배열 첫단계(카운트순) 없앰
$result = array();
foreach($json as $vals){
foreach($vals as $v) array_push($result, $v);
}
echo json_encode($result);
'컴터 > php' 카테고리의 다른 글
php 로 pdf 로 만들어 봅시다~ (6) | 2009.08.25 |
---|---|
[php로 원격전송]네이버가 XML-RPC 이제서야 지원합니다. (6) | 2009.08.21 |
텍스트로 다운받은 파일을 메모장으로 열때 줄바꿈 대신 이상한 문자가 찍힐때 (2) | 2009.04.08 |
www가 붙은 도메인과 안붙은 같은 도메인, 로그인 세션 유지 (0) | 2009.03.22 |