pouu69/kakao-api

适用于Laravel 5的kakao api

1.0.4 2016-11-23 04:32 UTC

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发放的KEYREDIRECT_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)。