pouu69 / kakao-api
适用于Laravel 5的kakao api
1.0.4
2016-11-23 04:32 UTC
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: ^6.0
This package is not auto-updated.
Last update: 2024-09-28 19:42:05 UTC
README
KakaoApi
因为Laravel中没有现成的Kakao API,所以简单创建了一些API。
- Kakao API for Laravel 5
- 仅支持一些Kakao API,如用户信息和Kakao Story发布。
require
"guzzlehttp/guzzle": "^6.0", "php": ">=5.5.0"
安装
请将以下内容添加到项目中的composer.json文件中,
{ "require": { "pouu69/kakao-api": "^1.0" } }
或者可以使用composer进行安装。
composer require pouu69/kakao-api
ServiceProvider
config/app.php
中按照以下方式在providers中注册:
'providers' => [ pouu69\KakaoApi\KakaoServiceProvider::class, ]
Facade
通过Facade注册别名时,请按以下方式添加:
'aliases' => [ 'Kakao' => pouu69\KakaoApi\Facade\KakaoFacade::class, ];
config
在config
文件夹中创建config文件。
创建包含以下内容的kakao.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。
提供的Kakao API
- 基本Kakao用户API
- 登录
- 登出
- 用户令牌发放
- 用户令牌有效性检查及信息获取
- 用户令牌更新
- 用户信息请求
- 卡卡奥故事API
- 用户验证
- 文章发布(仅文章)
- 图片发布
- 图片上传
- 发布(发布)
API使用
基本设置
// 사용하는 곳에다가 등록 use Kakao;
卡卡奥登录/用户令牌发放/用户信息请求
传递包含查询参数的数组。
try{ $url = Kakao::getLogin(); return redirect()->to($url); }catch(Exception $e){ var_dump('kakaoLogin error : ',$e->getMessage()); }
- 回调执行的函数
$code = $request->input()['code']; // $code 는 콜백 URL에 쿼리로 들어온 authorize_code 이다. // 카카오 로그인 이후 발급 받은 `authorize_code` 로 수행한다. $result = Kakao::postAccessToken($code); if(($result['code'] < 200 || $result['code'] > 206)){ // 에러 발생 // $result['body']['error_description'] 에러메세지 } if(!empty($result['contents']->access_token)){ $accessToken = $result['contents']->access_token; $refreshToken = $result['contents']->refresh_token; // 사용자 정보 가져오기 $credentials = Kakao::getCredential($accessToken); //token 세션 저장( 본인에 맞게 수행 ) Session::put('kakao_access_token', $accessToken); Session::put('kakao_refresh_token',$refreshToken); // 여기서 로그인 작업이나, 사용자 DB 작업 수행 }
登出
- 仅解除当前设备上的会话。
$result = Kakao::postLogout($accessToken);
用户令牌有效性检查及信息获取/用户令牌更新
- access_token有效性检查(通常12~24小时过期)
- 需要有refresh_token。
- 然后刷新令牌。
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); } } } }
卡卡奥故事API - 用户验证
- 验证卡卡奥故事用户
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 - 文章发布(仅文章)
- 仅发布文章。
try{ $content = '이것이 내용입니다.'; $result = Kakao::postNote($content, session()->get('kakao_access_token')); }catch(\Exception $e){ var_dump($e->getMessage()); }
卡卡奥故事API - 图片发布
图片上传
必须在上传图片后发布。
// 올릴 사진들을 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()); }
发布(发布)
- 按顺序进行上述图片上传操作
try{ // request data 형식 $data = [ 'image_url_list' => $imageUrlInfos, 'content' => '메세지 작성하기', 'permission' => // 포스팅 할 스토리를 전체 공개할지 친구 공개할지 여부. F : 친구에게만 공개, A : 전체 공개, M : 나만 보기 , 기본값은 A. ]; // 이제 최종 퍼블리싱 하기 $result = Kakao::postPhoto($data, session()->get('kakao_access_token')); return $this->response($result); }catch(Exception $e){ throw new Exception($e->getMessage()); }
许可证
MIT许可证(MIT)。