This repository has been archived by the owner on Sep 15, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
dbb03d7
commit 9b1afea
Showing
3 changed files
with
161 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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"); | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
<?php | ||
namespace bandAPI_hc; | ||
|
||
use pocketmine\plugin\PluginBase; | ||
|
||
use pocketmine\utils\Config; | ||
|
||
class bandAPI_hc extends PluginBase | ||
{ | ||
public $config; | ||
public $token; | ||
|
||
public function onEnable() | ||
{ | ||
$this->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); | ||
} | ||
} |