diff --git a/README.md b/README.md index de8f9a1..21a3084 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,85 @@ # PMMP-bandAPI -네이버 밴드 open API를 쉽게 사용할 수 있도록 해주는 플러그인 +네이버 밴드 open API를 쉽게 사용할 수 있도록 해주는 플러그인입니다. + +# TODO +- [x] 글쓰기 +- [x] Request bands +- [ ] Readme 읽기 쉽게 수정 +- [ ] 글 목록 조회 +- [ ] 댓글 목록 조회 +- [ ] custom request + + +--- +# 사용준비 +1. https://developers.band.us/develop/myapps/api/form 에서 서비스를 등록합니다. 참고로 Redirect URI은 아무렇게나 설정하셔도 무방합니다. +2. https://developers.band.us/develop/myapps/list 에서 방금 생성한 애플리케이션 이름을 클릭하여 API수정페이지로 이동한 후, 밴드계정 연동 버튼을 클릭하여 연동해줍니다. +3. 이 후 표시되는 Access Token을 메모해둡니다. +4. 이 플러그인을 적용하고, 서버를 재시작합니다. +5. PMMP폴더 내부에 있는 plugin_data폴더에서 생성된 bandAPI_hc폴더에 있는 config.yml을 열어줍니다. +6. token: "" 를 아래와 같이 수정합니다. +``` +token: 아까 기억해둔 Access Token입력 +``` +그럼 아마 아래와 비슷한 모습일겁니다. (token값은 아래 예제보단 길어요) +``` +token: AAAsbasS8ibhddbauisna2dfasnZQdjsHdjs +``` +7. 저장 후 서버를 재시작합니다. +# 사용방법 +## 타 플러그인에서 band API접근하기 +아래와 같은 방법으로 쉽게 접근할 수 있습니다. +```php +$api = $this->getServer()->getPluginManager()->getPlugin("bandAPI_hc"); +``` +## band key 가져오기 +타 플러그인에서 아래와같이 getBands를 호출하여 band key가 포함된 json을 전달받을 수 있습니다. +```php +$api = $this->getServer()->getPluginManager()->getPlugin("bandAPI_hc"); +$api->getBands(); +``` +참고로 서버 콘솔에 json이 출력됩니다만, 서버 로그엔 저장되지 않습니다. + +아래와 비슷한 내용일텐데, "band_key" 의 값을 메모하면 됩니다. +``` +{ + "result_code": 1, + "result_data": { + "bands" : [{ + "name" : "밴드 이름", + "band_key" : "AzIEz54gxWeSAB_nwygZ84", + "cover" : "http://img.band.us/111.jpg", + "member_count" : 100 + } + ,{ + "name" : "Baseball team", + "band_key" : "AzIEz54gxWeSAB_nwygZ95", + "cover" : "http://img.band.us/222.jpg", + "member_count" : 32 + }] + } +} +``` +참고로 위 예제의 band key는 AzIEz54gxWeSAB_nwygZ95입니다. + +### token값 직접 지정하기 +config에 입력한 token이 아닌 다른 토큰을 사용하려면 아래와 같은 방법을 사용할 수 있습니다. +```php +$api = $this->getServer()->getPluginManager()->getPlugin("bandAPI_hc"); +$api->getBands("여기에 Access Token값 입력"); +``` +## 글 작성하기 +참고로 글 작성을 위해서 위에서 구한 글을 작성하려는 밴드의 band key가 필요합니다. + +writePost(글 내용, band_key, 알림 전송 여부, token(option)) +```php +$api = $this->getServer()->getPluginManager()->getPlugin("bandAPI_hc"); +$api->writePost("여기에 내용을\n입력하세요","여기에 band key값 입력",false); //글 작성시 알림을 전송하지 않습니다. +$api->writePost("여기에 내용을\n입력하세요","여기에 band key값 입력",true); //글 작성시 알림을 전송합니다. +``` + +글 작성시 특정 token 사용예제 +```php +$api = $this->getServer()->getPluginManager()->getPlugin("bandAPI_hc"); +$api->writePost("여기에 내용을\n입력하세요","여기에 band key값 입력",true, "AAA2drffsaSnBD9bs7vS7dvsdSdvbsQ"); +``` diff --git a/plugin.yml b/plugin.yml new file mode 100644 index 0000000..f00e315 --- /dev/null +++ b/plugin.yml @@ -0,0 +1,7 @@ +name: bandAPI_hc +main: bandAPI_hc\bandAPI_hc +author: Hancho +version: 1.0.0 +api: +- 3.1.4 +- 3.0.0-ALPHA diff --git a/src/bandAPI_hc/bandAPI_hc.php b/src/bandAPI_hc/bandAPI_hc.php new file mode 100644 index 0000000..857777c --- /dev/null +++ b/src/bandAPI_hc/bandAPI_hc.php @@ -0,0 +1,70 @@ +getLogger()->info("bandAPI by Hancho"); + @mkdir($this->getDataFolder()); + $this->config = new Config($this->getDataFolder() . "/config.yml", Config::YAML); + $this->token = $this->config->get("token", ""); + if ($this->token == "") { + $this->config->set("token", ""); + $this->config->save(); + $this->getLogger()->info("config.yml을 수정하여 token값을 입력해주세요."); + } + $this->config->save(); + } + + public function writePost($content = "no content", string $band_key, bool $do_push = true, $token = "") + { + $this->requestPOST('https://openapi.band.us/v2.2/band/post/create', $band_key, $content, $do_push, $token); + } + + public function getBands($token = "") + { + if ($token == "") { + if ($this->token == "") { + $this->getLogger()->info("not found token"); + return "not found token"; + } + $token = $this->token; + } + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, "https://openapi.band.us/v2.1/bands?access_token=$token"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLINFO_HEADER_OUT, true); + $rst=json_decode(curl_exec($ch), true); + curl_close($ch); + var_dump($rst); + return $rst; + } + + public function requestPOST($init, $band_key, $content, $do_push, $token = "") + { + if ($token == "") { + if ($this->token == "") { + $this->getLogger()->info("not found token"); + return "not found token"; + } + $token = $this->token; + } + $ch = curl_init($init); + curl_setopt($ch, CURLOPT_POST, true); + $json= "access_token=$token&band_key=$band_key&content=".urlencode($content)."&do_push=".$do_push; + curl_setopt($ch, CURLOPT_POSTFIELDS, $json); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLINFO_HEADER_OUT, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer $token"]); + $rst=json_decode(curl_exec($ch), true); + var_dump($rst); + } +}