테스트 사이트 - 개발 중인 베타 버전입니다

네이버 밴드 글 가져오기

· 5년 전 · 10771 · 33

0. 게시판 관리자에서

test

게시판을 만들어 준다.

 

1. 테마의 tail.php 나 index.php 혹은 적당한 곳에 아래 스크립트 넣기

- 자동으로 밴드글을 가져오는 역할을 함.

 

<script>

$.ajax({
    url: '/api/band_posts.php', // 요청 할 주소
    async: false, // false 일 경우 동기 요청으로 변경
    type: 'POST', // GET, PUT
    data: {
    }, // 전송할 데이터
    dataType: 'text', // xml, json, script, html
    success: function(jqXHR) {console.log('success');}, // 요청 완료 시
    error: function(jqXHR) {console.log('error');}, // 요청 실패.
});

</script>

 

 

 

 

2. 해당 경로에 아래 파일 만들어 넣기

 

/*    /api/band_posts.php  */

 

<meta charset="utf-8">
<?
include_once('./_common.php');

/*
https://developers.band.us
네이버 밴드 개발자 사이트에서 내 서비스등록후, Aaccess Token 을 발급받는다.


밴드 목록에서 밴드키 찾기 부분, 밴드키를 찾은 후에는 해당 부분만 주석처리 한다.
*/


/************************************************************************************

$url = 'https://openapi.band.us/v2.1/bands';

$ch = curl_init();

$data = "access_token=네이버 밴드에서 발급받은 토큰키를 넣는다.";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, 0); // 헤더 출력 여부
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 결과값을 받을것인지

$result=curl_exec($ch);

curl_close ($ch);

var_dump($result);

**************************************************************************************/

 

 

 


//밴드 게시글 가져오기

$url = 'https://openapi.band.us/v2/band/posts';

$ch = curl_init();

$data = "access_token=네이버 밴드에서 발급받은 토큰키를 넣는다.&band_key=위밴드키 찾기부분에서 얻은 밴드키를 넣는다.";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, 0); // 헤더 출력 여부
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 결과값을 받을것인지

$result=curl_exec($ch);

curl_close ($ch);


$jsonData = json_decode($result, true);

$bo_table = "test";

// 게시판 ID를 넣는다.


$write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름

foreach ($jsonData['result_data']['items'] as $items) {

 //포스트글 중복체크
 $cnt = sql_fetch("select wr_id from $write_table where wr_1 = '".trim($items['post_key'])."' ");
 if( $cnt>0 || $items['content']=='Uploaded event.' ) {
  continue;
 } else {

  $wr_date_time = date('Y-m-d H:i:s',substr($items['created_at'],0,10));
  $wr_subject = "네이버 밴드글 (".substr($wr_date_time,0,10).")";
  // 제목은 적당하게 넣어 준다.

  $wr_content = substr(trim(nl2br($items['content'])),0,65536);
  $wr_content = preg_replace("#[\\\]+$#", "", $wr_content);

  $mb_id = "admin";
  $wr_name = "운영자";
  // 게시자 이름도 적당하게 넣어 준다.

  $wr_password = get_encrypt_string("1a2a3a4a5a6a");
  $wr_email = '';

  $wr_num = get_next_num($write_table);
  $wr_reply = '';
  $html = "html2";

  // 포스트 키
  $wr_1 = trim($items['post_key']); 

  $tmp_photo = "";
  foreach($items['photos'] as $photo){
   $tmp_photo .= '<img src="'.$photo['url'].'" alt="band images" ><br><br>';
  }

  $wr_content .= $tmp_photo;

  $sql = " insert into $write_table
   set wr_num = '$wr_num',
     wr_reply = '$wr_reply',
     wr_comment = 0,
     ca_name = '',
     wr_option = '$html,$secret,$mail',
     wr_subject = '$wr_subject',
     wr_content = '$wr_content',
     wr_link1 = '',
     wr_link2 = '',
     wr_link1_hit = 0,
     wr_link2_hit = 0,
     wr_hit = 0,
     wr_good = 0,
     wr_nogood = 0,
     mb_id = '{$mb_id}',
     wr_password = '$wr_password',
     wr_name = '$wr_name',
     wr_email = '$wr_email',
     wr_homepage = '',
     wr_datetime = '".$wr_date_time."',
     wr_last = '".$wr_date_time."',
     wr_ip = '{$_SERVER['REMOTE_ADDR']}',
     wr_1 = '$wr_1',
     wr_2 = '',
     wr_3 = '',
     wr_4 = '',
     wr_5 = '',
     wr_6 = '',
     wr_7 = '',
     wr_8 = '',
     wr_9 = '',
     wr_10 = '' ";
  
  sql_query($sql);

  $wr_id = sql_insert_id();

  // 부모 아이디에 UPDATE
  sql_query(" update $write_table set wr_parent = '$wr_id' where wr_id = '$wr_id' ");

  // 새글 INSERT
  sql_query(" insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '{$bo_table}', '{$wr_id}', '{$wr_id}', '".G5_TIME_YMDHIS."', '{$member['mb_id']}' ) ");

  // 게시글 1 증가
  sql_query("update {$g5['board_table']} set bo_count_write = (select count(wr_id) from  $write_table where 1=1) where bo_table = '{$bo_table}'");
 }
}

?>

 

 

 

3. 밴드 게시물은 등록된 역순으로 가져오게 되므로,

게시판 관리자에서 정렬순서를 wr_datetime desc 로 변경해 준다.

 

4. 다음 작업할때 쓸려고 팁자료실에 남겨 본다. 끝.

 

5. 추가

=================

 

해당 경로에 파일 만들기

/*    /api/_common.php  */

 

<?php
include_once('../common.php');
?>

 

/*

이 파일이 없으면 오류가 나고 DB 연결이 안됨.

그누보드 기본내용이라서 생략하였으나, 추가함.

*/

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 33개

설명 잘 해주셔서 적용 완료 했습니다. ^^
덕분에 글 목록 가져오기는 잘 되었습니다. 감사합니다. 그런데 작성자명을 가져오고 싶어서
$tmp_name = "";
foreach($items['author'] as $author){
$tmp_name .= $author['name'];
}
$wr_name =$tmp_name;//작성자이름가져오기
이렇게 넣었더니 ?hlmA 이렇게 출력이 됩니다. 왜 안가져와지는걸까요ㅜㅜ
자답입니다.

$wr_name = $items['author']['name'];

으로 바로 가져올수 있습니다.
안녕하세요.



덕분에 네이버 밴드 api연결이 되어 리스트나 내용은 잘 가져오고 있습니다.



그런데 다름이 아니오라



var_dump($result); 해서 글 상세내용을 잘 불러오고 있는데 내용 중 content 내용 중



emoji(이모티콘) 이후에 내용은 아에 불러오지 못하고 있는데 어떻게 해야 할지 검색 중 DB의 속성을



utf8 charset 에서는 이모지를 처리할 수 없다고 하여 utf8mb4 셋으로 변경하면 해결 된다는 내용을



확인하고 해 봤는데도 처리가 되지 않습니다.



혹시 DB 의 속성을 바꾸지 않고도 가능한 방법이 있는지 궁금합니다.



혹시나 해서...



$url = 'https://openapi.band.us/v2/band/posts';

$ch = curl_init();

$data = "access_token=ZZZ&band_key=AAA&locale=ko_KR";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, 0); // 헤더 출력 여부
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 결과값을 받을것인지

$result = curl_exec($ch);

curl_close($ch);

$result = json_decode($result, true);
//print_r($result); //화면 출력

foreach ($result['result_data']['items'] as $val) {
$wr_name = $val['author']['name'];
$wr_post_key = $val['post_key'];
$wr_content = $val['content'];

$conn = @mysqli_connect($servername, $username, $password, $dbname);

$strSQL = "INSERT INTO TEST_TABLE SET name = '" . $wr_name . "', post_key = '" . $wr_post_key . "', contents = '" . $wr_content . "'";

//$apartQna = new Qna();

if ($conn->query($strSQL) === TRUE) {
//$data = $apartQna->getList($req);
echo "_스크랩핑완료";
} else {
//echo "Error: " . $strSQL . "<br>" . $conn->error;
echo "Error";
}

print_r($wr_content);

$conn->close();



혹시 잘 못 처리된 부분이 있는지 정중히 부탁 드립니다.



수고하세요.ㅠㅠ
1년 전

안녕하세요

혹시 밴드 키값 어떻게 확인하는지 알려줄 수 있나요?

기억이 안 납니다. ㅜㅜ

@초록물고기 밴드 키값 찾는 부분이 주석처리되어 있습니다.

해당부분 주석 풀고 밴드 키값을 확인후 다시 주석처리 하시면 됩니다.

1년 전

@경천76 

답변 감사합니다.

제가 해봐도 안되네요.. 바보라 미안합니다.

분명 앞전에 성공했는데.. 전혀 기억이 없습니다.

아래는 운영밴드입니다.

https://band.us/band/90547107

access_token

ZQAAAfhQWEBbVLONMYmvGa9RvA6yOPRbSm0qnMndX8KPcuO64DhExtUllm5fUPg9HRYpaeIoWmhdVs91No6Ewrv5itkMcmID-a8mAqya7LxRdujr

 

초보라 죄송합니다.

부탁드립니다.

밴드를 찾을 수 있는 파일 하나만 만들어주시면 안될까요?ㅜㅜ

혹시 가능하다면 140724@naver.com으로 좀 부탁드립니다.

 

@초록물고기 젤 마지막에 밴드키 부분을 복사해서 쓰시면 됩니다.

AAA89lmt2CfnABff8kKajEk_  네요.

<meta charset="utf-8">
<?php
include_once('./_common.php');

 

$url = 'https://openapi.band.us/v2.1/bands';

$ch = curl_init();

$data = "access_token=ZQAAAfhQWEBbVLONMYmvGa9RvA6yOPRbSm0qnMndX8KPcuO64DhExtUllm5fUPg9HRYpaeIoWmhdVs91No6Ewrv5itkMcmID-a8mAqya7LxRdujr";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, 0); // 헤더 출력 여부
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 결과값을 받을것인지

$result=curl_exec($ch);

curl_close ($ch);

var_dump($result);


?>

1년 전

@경천76 너무 너무 감사드립니다. 너무 너무...

어떻게 찾으셨어요?

1년 전

경천님 1개 이상의 밴드를 사용하려면,

밴드키에 , <--콤마를 주면 가능한가요??

제가 너무 많이 괴롭히네요..

^^;

$data = "access_token=ZQAAAY6GDSBG1rRG3WuKKofyon9JTQcnHzM5ymaBI10ArE_3lFShDSArGShc1RMs8wiKSrP8rGvhg5hSWWLVBoTeVDX7L1rqIZmqBzAQhxqdmvWh&band_key=AABAOQwUJhf2YcBKY9qAWJu-",AAA89lmt2CfnABff8kKajEk_;

게시글 목록

번호 제목
24318
24317
24315
24309
24294
24293
24277
24262
24260
24253
24251
24236
24233
24228
24226
24221
24214
24203
24201
24199
24196
24195
24194
24192
24191
24187
24185
24183
24172
24168