deprecated project
KakaoApi
๋ผ๋ผ๋ฒจ์์ ์ฌ์ฉํ ๋ผ๋ผ๋ฒจ์ฉ Kakao API ๊ฐ ์๊ธธ๋ ๊ฐ๋จํ๊ฒ ๋ช๋ช API ๋ง ๋ง๋ค์ด ๋ดค์ต๋๋ค., (*1)
- Kakao API for Laravel 5
- ์นด์นด์ค ์ฌ์ฉ์ ์ ๋ณด, ์นด์นด์ค ์คํ ๋ฆฌ ํฌ์คํ
๋ช๊ฐ๋ง api๋ฅผ ์ง์ํฉ๋๋ค.
require
```` php
"guzzlehttp/guzzle": "^6.0",
"php": ">=5.5.0", (*2)
# Installation
ํ๋ก์ ํธ์ ์๋ composer.json์ ๋ค์์ ์ถ๊ฐ ํ์๊ฑฐ๋,
```` php
{
"require": {
"pouu69/kakao-api": "^1.0"
}
}
composer ๋ฅผ ์ด์ฉํ์ฌ ์ค์น ํ ์ ์์ต๋๋ค., (*3)
```` php
composer require pouu69/kakao-api, (*4)
# ServiceProvider
`config/app.php`์ ์๋ ์ ๊ฐ์ด providers์ ๋ฑ๋ก์ ํฉ๋๋ค.
```` php
'providers' => [
pouu69\KakaoApi\KakaoServiceProvider::class,
]
Facade
Facade ๋ฑ๋ก์ ํตํด alias๋ฅผ ๋ฑ๋ก ํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐ ํ์๋ฉด ๋ฉ๋๋ค., (*5)
```` php
'aliases' => [
'Kakao' => pouu69\KakaoApi\Facade\KakaoFacade::class,
];, (*6)
# config
`config` ํด๋์ config ํ์ผ์ ์์ฑํด์ผํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ ๊ฐ์ง `kakao.php` ํ์ผ์ ์์ฑํฉ๋๋ค.
```` php
<?php
return [
'AUTH_URL' => 'https://kauth.kakao.com',
'API_URL' => 'https://kapi.kakao.com',
'API_VERSION' => '/v1',
'REDIRECT_URL' => env('KAKAO_URL',''),
'API_KEY' => env('KAKAO_KEY', ''),
'ADMIN_KEY' => env('KAKAO_ADMIN_KEY', ''),
];
.env ์ kakao์์ ๋ฐ๊ธ๋ฐ์ KEY ์ REDIRECT_URL์ ๋ฑ๋ก ํด๋์ต๋๋ค., (*7)
์ ๊ณตํ๋ Kakao API
- ๊ธฐ๋ณธ ์นด์นด์ค ์ฌ์ฉ์ API
- ๋ก๊ทธ์ธ
- ๋ก๊ทธ์์
- ์ฌ์ฉ์ ํ ํฐ ๋ฐ๊ธ
- ์ฌ์ฉ์ ํ ํฐ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ์ ๋ณด ์ป๊ธฐ
- ์ฌ์ฉ์ ํ ํฐ ๊ฐฑ์
- ์ฌ์ฉ์ ์ ๋ณด ์์ฒญ
- ์นด์นด์ค ์คํ ๋ฆฌ API
- ์ฌ์ฉ์ ํ์ธ
- ๊ธ ํฌ์คํ
(only ๊ธ)
- ์ฌ์ง(photo) ํฌ์คํ
- ์ฌ์ง ์
๋ก๋
- ํผ๋ธ๋ฆฌ์ฑ(ํฌ์คํ
)
API ์ฌ์ฉ
๊ธฐ๋ณธ ์ค์
```` php
// ์ฌ์ฉํ๋ ๊ณณ์๋ค๊ฐ ๋ฑ๋ก
use Kakao;, (*8)
## ์นด์นด์ค ๋ก๊ทธ์ธ / ์ฌ์ฉ์ ํ ํฐ ๋ฐ๊ธ / ์ฌ์ฉ์ ์ ๋ณด ์์ฒญ
์ฟผ๋ฆฌํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํ ๋ฐฐ์ด์ ์ ๋ฌํฉ๋๋ค.
```` php
try{
$url = Kakao::getLogin();
return redirect()->to($url);
}catch(Exception $e){
var_dump('kakaoLogin error : ',$e->getMessage());
}
- ์ฝ๋ฐฑ์ผ๋ก ์คํ๋๋ ๋ฉ์๋
```` php
$code = $request->input()['code']; // $code ๋ ์ฝ๋ฐฑ URL์ ์ฟผ๋ฆฌ๋ก ๋ค์ด์จ authorize_code ์ด๋ค., (*9)
// ์นด์นด์ค ๋ก๊ทธ์ธ ์ดํ ๋ฐ๊ธ ๋ฐ์ authorize_code ๋ก ์ํํ๋ค.
$result = Kakao::postAccessToken($code);, (*10)
if(($result['code'] < 200 || $result['code'] > 206)){
// ์๋ฌ ๋ฐ์
// $result['body']['error_description'] ์๋ฌ๋ฉ์ธ์ง
}, (*11)
if(!empty($result['contents']->access_token)){
$accessToken = $result['contents']->access_token;
$refreshToken = $result['contents']->refresh_token;, (*12)
// ์ฌ์ฉ์ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
$credentials = Kakao::getCredential($accessToken);
//token ์ธ์
์ ์ฅ( ๋ณธ์ธ์ ๋ง๊ฒ ์ํ )
Session::put('kakao_access_token', $accessToken);
Session::put('kakao_refresh_token',$refreshToken);
// ์ฌ๊ธฐ์ ๋ก๊ทธ์ธ ์์
์ด๋, ์ฌ์ฉ์ DB ์์
์ํ
}, (*13)
## ๋ก๊ทธ์์
- ์ธ์
์ ํ์ฌ ํด๋น ๊ธฐ๊ธฐ๋ง ํด์ ํด์ค๋๋ค.
```` php
$result = Kakao::postLogout($accessToken);
์ฌ์ฉ์ ํ ํฐ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ์ ๋ณด ์ป๊ธฐ / ์ฌ์ฉ์ ํ ํฐ ๊ฐฑ์
- access_token ์ ํจ์ฑ ๊ฒ์ฌ (12~24์๊ฐ์ด ๋๋ถ๋ถ ๋ง๋ฃ์๊ฐ์ด๊ธฐ ๋๋ฌธ์)
- refresh_token ์ด ์์ด์ผ ํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ํ ํฐ์ ๊ฐฑ์ ํฉ๋๋ค.
```` php
if(session()->has('kakao_access_token') && session()->has('kakao_refresh_token')){
$kakaoAccessToken = session()->get('kakao_access_token');
$accessTokenInfo = Kakao::getInfoAccessToken($kakaoAccessToken);
if($accessTokenInfo['code'] !== 200){
$tokens = Kakao::postRefreshToken($kakaoAccessToken);
if($token['code']!== 200){
// error handling
}else{
Session::put('kakao_access_token', $tokens['contents']->access_token);
if(isset($tokens['contents']->refresh_token)){
Session::put('kakao_refresh_token',$tokens['contents']->refresh_token);
}
}
}
}, (*14)
## ์นด์นด์ค ์คํ ๋ฆฌ API - ์ฌ์ฉ์ ํ์ธ
- ์นด์นด์ค ์คํ ๋ฆฌ ์ฌ์ฉ์ ์ธ์ง ํ์ธ
```` php
try{
// ์นด์นด์ค์คํ ๋ฆฌ ์ฌ์ฉ์ ์ธ์ง ํ์ธํฉ๋๋ค.
$result = Kakao::isStoryUser(session()->get('kakao_access_token'));
$this->response($result)['contents'];
return $result;
}catch(Exception $e){
$error = json_decode($e->getMessage());
// error handling
}
์นด์นด์ค ์คํ ๋ฆฌ API - ๊ธ ํฌ์คํ
(only ๊ธ)
- ์ค๋ก์ง ๊ธ๋ง ํฌ์คํ
ํฉ๋๋ค.
```` php
try{
$content = '์ด๊ฒ์ด ๋ด์ฉ์
๋๋ค.';
$result = Kakao::postNote($content, session()->get('kakao_access_token'));
}catch(\Exception $e){
var_dump($e->getMessage());
}, (*15)
## ์นด์นด์ค ์คํ ๋ฆฌ API - ์ฌ์ง ํฌ์คํ
### ์ฌ์ง ์
๋ก๋
> ํญ์ ์ฌ์ง์ ์
๋ก๋ ํ ์ดํ์ ํฌ์คํ
ํด์ผํฉ๋๋ค.
```` php
// ์ฌ๋ฆด ์ฌ์ง๋ค์ guzzle์ด ์ํ๋ ํฌ๋งท์ ๋ง๊ฒ ๋ง๋ญ๋๋ค.
$imageUrl = []
$i = 0;
foreach($images as $imagePath){
$fileDir = // ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋์ด ์๋ ๋ก์ปฌ ์ ๋ ๊ฒฝ๋ก
$fileName = // ์ด๋ฏธ์ง ์ด๋ฆ
$file = [
'name' => 'file['.$i++.']',
'contents' => fopen($fileDir,'r'),
'filename' => $fileName
];
$imageUrl[] = $file;
}
try{
// ์์์ ์์
ํ ์ด๋ฏธ์ง๋ฅผ ๋๊ธฐ๋ฉฐ, ์ด๋ฏธ์ง๋ฅผ ์นด์นด์ค์ ์
๋ก๋ํฉ๋๋ค.
$result = Kakao::postImageUpload($imageUrl, session()->get('kakao_access_token'));
return $this->response($result)['contents'];// ์ฌ๊ธฐ์ ์ค์ ์
๋ก๋ ํ ๋ ํ์ํ ์ ๋ณด๊ฐ ๋ด๊ฒจ์์ต๋๋ค. ๋๋ throw exception ๋
}catch(Exception $e){
throw new Exception($e->getMessage());
}
ํผ๋ธ๋ฆฌ์ฑ(ํฌ์คํ
)
- ์ ์ฌ์ง ์
๋ก๋ ์์
์ด์ด์ ์งํ
```` php
try{
// request data ํ์
$data = [
'image_url_list' => $imageUrlInfos,
'content' => '๋ฉ์ธ์ง ์์ฑํ๊ธฐ',
'permission' => // ํฌ์คํ
ํ ์คํ ๋ฆฌ๋ฅผ ์ ์ฒด ๊ณต๊ฐํ ์ง ์น๊ตฌ ๊ณต๊ฐํ ์ง ์ฌ๋ถ. F : ์น๊ตฌ์๊ฒ๋ง ๊ณต๊ฐ, A : ์ ์ฒด ๊ณต๊ฐ, M : ๋๋ง ๋ณด๊ธฐ , ๊ธฐ๋ณธ๊ฐ์ A.
];, (*16)
// ์ด์ ์ต์ข
ํผ๋ธ๋ฆฌ์ฑ ํ๊ธฐ
$result = Kakao::postPhoto($data, session()->get('kakao_access_token'));
return $this->response($result);
}catch(Exception $e){
throw new Exception($e->getMessage());
}
````, (*17)
License
The MIT License (MIT)., (*18)